Tôi cần biết làm thế nào tôi có thể kết xuất bộ nhớ trong Safari.app vào một tệp.
Tôi đã nhập gdb đính kèm 6741 (mã safari của tôi).
Giờ thì sao?
Tôi đã thử tìm kiếm trợ giúp trên gdb trên google, nhưng tôi không thể tìm thấy bất cứ điều gì cho tôi biết phải làm gì, ngay cả khi tìm kiếm "cách kết xuất bộ nhớ trong gdb" :(
Tôi đã thử "trợ giúp", nó đưa cho tôi một loạt các lệnh, nhưng không ai trong số chúng hoạt động. Gần nhất tôi đến là:
(gdb) dump memory ~/safaridump.bin 0
Missing stop address.
Vì vậy, địa chỉ dừng là gì? Tôi không biết? Làm thế nào tôi có nghĩa là để biết địa chỉ dừng? Tôi đã thử tìm kiếm trên google cho "" thiếu địa chỉ dừng "gdb", nó không có ích. Tôi không biết làm thế nào tôi có được địa chỉ dừng.
Tôi đã thử điều này:
(gdb) kết xuất bộ nhớ ~ / safaridump.bin 0 0xffffffff
Điều đó cũng không hiệu quả.
Tôi hiểu rồi:
gdb stack crawl at point of internal error:
0 gdb-i386-apple-darwin 0x0012fd8f internal_vproblem + 316
1 gdb-i386-apple-darwin 0x0012ffd3 internal_verror + 43
2 gdb-i386-apple-darwin 0x00130008 align_down + 0
3 gdb-i386-apple-darwin 0x00130a21 xstrvprintf + 0
4 gdb-i386-apple-darwin 0x00130c25 xmalloc + 40
5 gdb-i386-apple-darwin 0x000045d6 dump_memory_to_file + 241
6 gdb-i386-apple-darwin 0x0012dd3d execute_command + 713
7 gdb-i386-apple-darwin 0x0008815d command_handler + 213
8 gdb-i386-apple-darwin 0x000891af command_line_handler + 1120
9 gdb-i386-apple-darwin 0x001c2486 rl_callback_read_char + 137
10 gdb-i386-apple-darwin 0x000882ed rl_callback_read_char_wrapper + 18
11 gdb-i386-apple-darwin 0x000874b7 handle_file_event + 349
12 gdb-i386-apple-darwin 0x00086e7e process_event + 131
13 gdb-i386-apple-darwin 0x00087c38 gdb_do_one_event + 1178
14 gdb-i386-apple-darwin 0x00081bfd catch_errors + 78
/SourceCache/gdb/gdb-1346/src/gdb/utils.c:1208: internal-error: virtual memory exhausted.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) n
Tôi thực sự không có được điều này. Tất cả những gì tôi muốn, là bộ nhớ của tôi trong Safari, được ghi vào một tệp.
Nó thực sự quan trọng đối với tôi. Tôi đã dành khoảng 2 giờ để gõ trái tim tội nghiệp của mình vào Safari, viết một số thông tin thực sự quan trọng. Và sau đó trang web ngu ngốc mà tôi đã viết, đã không chấp nhận bài viết của tôi, bởi vì tôi đã mất quá lâu để viết nó, rằng tôi đã "đăng xuất". Khi tôi đăng nhập lại, bài viết của tôi đã bị mất.
Tôi thực sự muốn viết lại này. Tất cả những gì tôi muốn là bộ nhớ từ Safari, vì vậy tôi có thể tìm kiếm nội dung của nó cho một vài từ khóa để xem liệu tôi có thể lấy lại được văn bản của mình không.
Có ai có ý kiến gì không?
Ít nhất, ngay cả khi tôi không lấy lại được bài viết của mình, tôi sẽ học được điều gì đó về gdb. Điều này có thể có ích trong việc phát triển phần mềm của tôi;)
Cảm ơn nếu bạn có thể giúp! Nó có ý nghĩa rất lớn đối với tôi. Tôi sẽ để Safari và gdb chạy, cho đến khi tôi nhận được câu trả lời. Tôi sẽ không để điều này xảy ra cho đến khi tôi phát hiện ra rằng tôi có thể hoặc không thể lấy lại được văn bản của mình.
Nếu bất cứ ai muốn đưa ra câu trả lời chung chung hơn về cách phục hồi công việc bị mất ... đó là một điều tốt. Chẳng hạn như các chương trình tìm kiếm toàn bộ đĩa cứng của tôi để tìm các chuỗi cụ thể có thể có trong VRAM trước khi công việc bị mất.
...
http://www.mail-archive.com/use-revolution@lists.runrev.com/msg22978.html Trang này nói rằng kill -9 không tạo ra kết xuất lõi. Bất chấp những gì trang này nói là http://developer.apple.com/mac/l Library / technotes / tn2004 / tn2124.html # SECECOREDUMPS, lệnh này "kill -ABRT (PID TẠI ĐÂY)", sẽ không tạo ra kết xuất lõi.
ls -la /cores
total 0
drwxrwxr-t@ 2 root admin 68 23 Jun 07:19 .
drwxrwxr-t 38 root admin 1360 14 Dec 16:06 ..