9

Мне нужно знать, как я могу сбросить память в Safari.app, в файл.

Я ввел gdb attach 6741 (мой PID для сафари).

Что теперь?

Я попытался найти справку в gdb в google, но не смог найти ничего, что подсказывало бы мне, что делать, даже при поиске "как сбросить память в gdb" :(

Я попробовал "help dump", он дал мне кучу команд, но ни одна из них не сработала. Самое близкое, что я пришел, было:

(gdb) dump memory ~/safaridump.bin 0
Missing stop address.

Так какой же адрес? Я не знаю? Как мне узнать адрес остановки? Я попытался найти в Google "" отсутствующий стоп-адрес "GDB", это не помогло. Я понятия не имею, как я могу получить адрес остановки.

Я попробовал это:

(gdb) дамп памяти ~/safaridump.bin 0 0xffffffff

Это тоже не сработало.

Я получил это:

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

Я действительно не понимаю этого. Все, что я хочу, - это моя память в Safari, записанная в файл.

Это действительно важно для меня. Я провел около 2 часов, печатая свое бедное сердце в Safari, записывая действительно важную информацию. И затем глупый веб-сайт, на котором я писал, не принял мой пост, потому что я так долго писал его, что я "вышел". К тому времени, как я вернулся, мой пост был потерян.

Я действительно хочу эту запись обратно. Все, что мне нужно, - это память от Safari, поэтому я могу искать по ее содержимому по нескольким ключевым словам, чтобы посмотреть, смогу ли я вернуть свои записи.

Любые идеи кто-нибудь?

По крайней мере, даже если я не верну свои письма, я кое-что узнаю о GDB. Что может пригодиться в моей разработке программного обеспечения;)

Спасибо, если вы можете помочь! Это будет так много значить для меня. Я собираюсь оставить Safari и GDB работающими, пока не получу ответ. Я не позволю этому уйти, пока я не узнаю, что могу или не могу вернуть свои письма.

Если кто-то хочет дать более общие ответы о том, как восстановить потерянную работу ... это хорошо. Например, программы для поиска по всему моему жесткому диску определенных строк, которые могли быть в VRAM до того, как работа была потеряна.

...

http://www.mail-archive.com/use-revolution@lists.runrev.com/msg22978.html На этой странице сказано, что kill -9 не создает дамп ядра. Несмотря на то, что на этой странице написано http://developer.apple.com/mac/library/technotes/tn2004/tn2124.html#SECCOREDUMPS , эта команда "kill -ABRT (PID HERE)" не создаст дамп ядра.

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 ..

5 ответов5

5

Привет всем, я нашел, как генерировать coredump на OSX!

http://osxbook.com/book/bonus/chapter8/core/

Там есть загружаемая программа в исходном виде. Я скачал, скомпилировал и, ура! Это сработало! Он генерировал дамп ядра почти в 1 ГБ!

Имеет ли информация там не очень важно сейчас. Я узнал, как генерировать coredumps на OSX, что определенно может быть полезным навыком для разработчика программного обеспечения;) Вы никогда не знаете, когда дамп ядра может пригодиться.

Я могу себе представить, что несколько лет я выполняю важную работу, и мне нужен дамп ядра, чтобы выяснить, что происходит, и это приложение "gcore" - то, что мне нужно. Даже если это окупится один раз ... это хорошо.

1

Safari сохраняет данные формы для всех форм (если вы не отключили их или сайт не пометил форму как не подлежащую сохранению) в зашифрованном файле базы данных. Вы можете найти пароль для файла в вашей цепочке для ключей входа в систему, и файл находится в ~/Library/Safari/Form Values , поэтому теоретически вы можете извлечь данные из файла и посмотреть, есть ли там введенный вами текст.

Тем не менее, у меня был взлом, и я не могу понять, какой формат файла или как он зашифрован, поэтому я не знаю, как на самом деле получить содержимое, я уверен, что кто-то делает, хотя :)

0

Посмотрите, есть ли в OSX команда pmap, она покажет вам отображенную память любого запущенного процесса. Обычно это читается из /proc в системах Linux. Далее, если вы ищете конкретную информацию, вы можете использовать команду gdb find. Введите help find в gdb для получения дополнительных инструкций.

0

Вы всегда можете повернуть на входе в GDB set logging on

Затем все, что вы делаете, выводится в файл журнала (обычно это gdb.txt). Таким образом, вы можете просто начать печать памяти с помощью команды x , и все перейдет к файлу журнала и экрану.

-1

Я знаю, старая тема ...

GDB имеет встроенную команду для вывода образа ядра текущего процесса / программы.

generate-core-file [filename]
gcore [filename]

обе команды выполняют одно и то же, имя файла является необязательным, по умолчанию используется значение « core. <process_ip> »

Ха! Похоже, что даже установлена утилита (с gdb) с именем 'gcore', которая также выводит запущенную программу. Конечно, проще приостановить процесс с помощью GDB, а затем сбросить его.

Находить новые вещи каждый день! ... но GDB имеет встроенную функцию ... просто так ты знаешь ..

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .