Safari.app, bir dosyaya bellek dökümü nasıl bilmek gerekir.
Gdb attach 6741 (benim safari PID) girdim.
Şimdi ne olacak?
Google'da gdb ile ilgili yardım aramayı denedim, ancak "gdb'ye nasıl bellek döküleceğini" ararken bile ne yapacağımı söyleyen bir şey bulamadım :(
Ben "yardım dökümü" denedim, bana bir sürü komut verdi, ama hiçbiri işe yaramadı. En yakın geldiğim:
(gdb) dump memory ~/safaridump.bin 0
Missing stop address.
Peki durma adresi nedir? Bilmiyorum? Durak adresini nasıl bilebilirim? Google'da "" dur durak adresi "gdb" için arama yapmayı denedim, yardımcı olmadı. Durak adresini nasıl alacağımı bilmiyorum.
Bunu denedim:
(gdb) döküm belleği ~ / safaridump.bin 0 0xffffffff
Bu da işe yaramadı.
Bunu anladım:
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
Bunu gerçekten anlamadım. Tek istediğim Safari'deki bir dosyaya yazdığım hafızam.
Benim için gerçekten önemli. Safari'de kalbimi yazarak, gerçekten önemli bazı bilgileri yazarak yaklaşık 2 saat geçirdim. Sonra yazdığım aptal web sitesi, yazımı kabul etmedi, çünkü yazdığım kadar uzun sürdüğüm için, "çıkış" yapmıştım. Tekrar oturum açtığımda görevim kayboldu.
Bu yazıyı gerçekten geri istiyorum. Tek istediğim Safari'nin hafızası, bu yüzden yazımı geri alıp alamayacağımı görmek için içeriğinde birkaç anahtar kelime arayabilirim.
Herhangi bir fikrin var mı?
En azından, yazımı geri alamasam bile, gdb hakkında bir şeyler öğreneceğim. Hangi benim yazılım geliştirme kullanışlı olabilir;)
Eğer yardım edebilirsen teşekkürler! Bu benim için çok şey ifade eder. Bir cevap alana kadar Safari ve GDB'yi çalışır durumda bırakacağım. Yazımı geri alabileceğimi veya alamayacağımı öğrenene kadar bunun gitmesine izin vermeyeceğim.
Eğer birisi kayıp işin nasıl kurtarılacağı hakkında daha genel cevaplar vermek isterse ... bu iyi bir şeydir. Çalışmalar kaybolmadan önce tüm sabit diskimi VRAM'de olabilecek belirli dizeleri aramak için programlar gibi.
...
http://www.mail-archive.com/use-revolution@lists.runrev.com/msg22978.html Bu sayfa, kill -9'un çekirdek dökümü oluşturmadığını söylüyor. Bu sayfanın söylediklerine rağmen http://developer.apple.com/mac/library/technotes/tn2004/tn2124.html#SECCOREDUMPS , bu komut "kill -ABRT (PID HERE)" adlı çekirdek dökümü oluşturmaz.
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 ..