Saya perlu tahu bagaimana saya bisa membuang memori di Safari.app, ke file.
Saya sudah memasukkan gdb melampirkan 6741 (PID safari saya).
Sekarang apa?
Saya mencoba mencari bantuan di gdb di google, tetapi saya tidak dapat menemukan apa pun yang memberi tahu saya apa yang harus dilakukan, bahkan ketika mencari "cara membuang memori di gdb" :(
Saya mencoba "tolong dump", itu memberi saya banyak perintah, tetapi tidak ada yang bekerja. Yang paling dekat saya datang adalah:
(gdb) dump memory ~/safaridump.bin 0
Missing stop address.
Jadi, apa alamat berhentinya? Saya tidak tahu Bagaimana saya bisa tahu alamat berhenti? Saya mencoba mencari di Google untuk "" alamat berhenti hilang "gdb", itu tidak membantu. Saya tidak tahu bagaimana saya mendapatkan alamat stop.
Saya mencoba ini:
(gdb) dump memory ~ / safaridump.bin 0 0xffffffff
Itu juga tidak berhasil.
Saya mengerti:
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
Saya benar-benar tidak mengerti. Yang saya inginkan, adalah memori saya di Safari, ditulis ke file.
Ini sangat penting bagi saya. Saya menghabiskan sekitar 2 jam mengetik kata hati saya yang buruk di Safari, menulis beberapa informasi yang sangat penting. Dan kemudian situs web bodoh yang saya tulis, tidak menerima posting saya, karena saya telah lama menulisnya, sehingga saya telah "keluar". Pada saat saya masuk kembali, pos saya hilang.
Saya sangat ingin tulisan ini dikembalikan. Yang saya inginkan adalah memori dari Safari, jadi saya dapat mencari di dalamnya isi beberapa kata kunci untuk melihat apakah saya bisa mendapatkan kembali tulisan saya.
Ada ide?
Paling tidak, bahkan jika saya tidak mendapatkan kembali tulisan saya, saya akan belajar sesuatu tentang gdb. Yang bisa berguna dalam pengembangan perangkat lunak saya;)
Terima kasih jika Anda dapat membantu! Itu sangat berarti bagi saya. Saya akan membiarkan Safari dan gdb tetap berjalan, sampai saya mendapatkan jawaban. Saya tidak akan membiarkan ini pergi sampai saya tahu bahwa saya bisa atau tidak bisa mendapatkan kembali tulisan saya.
Jika ada yang ingin memberikan jawaban yang lebih umum tentang cara memulihkan pekerjaan yang hilang ... itu hal yang baik. Seperti program untuk mencari seluruh hard disk saya untuk string tertentu yang mungkin ada di VRAM sebelum pekerjaan hilang.
...
http://www.mail-archive.com/[email protected]/msg22978.html Halaman ini mengatakan bahwa kill -9 tidak menghasilkan dump inti. Terlepas dari apa yang dikatakan halaman ini http://developer.apple.com/mac/library/technotes/tn2004/tn2124.html#SECCOREDUMPS , perintah ini "kill -ABRT (PID HERE)", tidak akan membuat dump inti.
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 ..
Jawaban:
Hai semuanya, saya menemukan cara membuat coredump di OSX!
http://osxbook.com/book/bonus/chapter8/core/
Ada program yang dapat diunduh di sana, dalam bentuk sumber. Saya mengunduhnya, mengompilasinya, dan, hore! Berhasil! Ini menghasilkan dump inti hampir 1GB!
Apakah informasi itu ada di sana atau tidak, tidak penting sekarang. Saya belajar cara membuat coredumps di OSX, yang pasti bisa menjadi keterampilan yang berguna sebagai pengembang perangkat lunak;) Anda tidak pernah tahu kapan sebuah dump inti bisa berguna.
Saya hanya dapat membayangkan beberapa tahun waktu saya melakukan pekerjaan yang penting, dan saya membutuhkan dump inti untuk mencari tahu apa yang terjadi, dan aplikasi "gcore" ini adalah yang saya butuhkan. Bahkan jika itu terbayar sekali ... ini adalah hal yang baik.
sumber
gcore
termasuk dalam macOS sejak 10.12 Sierra. Itu terletak di/usr/bin/gcore
dan juga memiliki halaman manual di/usr/share/man/man1/gcore.1
. Ini lebih lanjut dikonfirmasi oleh Homebrew yang menolak untuk menginstalgcore
ke/usr/local/bin
Sierra atau lebih tinggi.Safari menyimpan data formulir untuk semua formulir (kecuali jika Anda mematikannya, atau situs menandai formulir sebagai tidak dapat disimpan), dalam file database terenkripsi. Anda dapat menemukan kata sandi untuk file di gantungan kunci login Anda, dan file berada di
~/Library/Safari/Form Values
, jadi secara teoritis, Anda dapat mengekstrak data dari file tersebut, dan melihat apakah yang Anda ketikkan ada di sana.Namun, saya telah melakukan peretasan, dan saya tidak dapat mengetahui format file itu, atau bagaimana cara dienkripsi, jadi saya tidak tahu bagaimana cara mendapatkan isinya, saya yakin seseorang melakukannya :)
sumber
Anda selalu dapat mengaktifkan logon di GDB
set logging on
Kemudian, semua yang Anda lakukan dicetak ke file log (biasanya gdb.txt). Jadi Anda bisa mulai mencetak memori menggunakan
x
perintah, dan semuanya akan masuk ke file log serta layar.sumber
Lihat apakah OSX memiliki perintah pmap, ia akan menunjukkan kepada Anda memori yang dipetakan dari setiap proses yang berjalan. Ini biasanya dibaca dari / proc di sistem linux. Selanjutnya, jika Anda mencari informasi tertentu, Anda dapat menggunakan perintah gdb find. Ketik bantuan temukan di gdb untuk instruksi lebih lanjut.
sumber
Saya tahu, utas lama ...
gdb memiliki perintah bawaan untuk membuang gambar inti dari proses / program saat ini.
kedua perintah melakukan hal yang sama, nama file adalah opsional, standarnya adalah ' inti. <process_ip> '
Hah! Sepertinya bahkan ada utilitas yang diinstal (dengan gdb) bernama 'gcore' untuk membuang program yang sedang berjalan juga. Tentu saja, lebih mudah menghentikan proses dengan gdb, lalu membuangnya.
Menemukan hal-hal baru setiap hari! ... tapi gdb memiliki fungsi built-in ... begini saja ya tahu ..
sumber
(gdb) gcore Undefined command: "gcore". Try "help". (gdb) generate-core-file Undefined command: "generate-core-file". Try "help".