Как сбросить память в файл в gdb (osx)? Нужно спасти мою работу

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

я ввел GDB attach 6741 (мой safari PID).

Теперь что?

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

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

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

Так что перестань адрес? Я не знаю? Откуда мне знать адрес остановки? Я попытался найти в google ""отсутствующий адрес остановки "gdb", это не помогло. Понятия не имею, откуда у меня этот адрес.

Я попытался это:

(gdb) дамп памяти ~/safaridump.Бен 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, пока не получу ответ. Я не отпущу это, пока не узнаю, что могу или не могу вернуть свои записи.

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

...

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

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 ..
19
задан boytheo
18.02.2023 5:54 Количество просмотров материала 3250
Распечатать страницу

5 ответов

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

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

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

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

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

5
отвечен boytheo 2023-02-19 13:42

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

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

1
отвечен James 2023-02-19 15:59

вы всегда можете включить вход в GDB set logging on

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

0
отвечен alesplin 2023-02-19 18:16

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

0
отвечен ychaouche 2023-02-19 20:33

Я знаю, старую нить...

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

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

обе команды делают то же самое, имя файла не является обязательным, по умолчанию 'ядра.'

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

поиск новых вещей каждый день! ... но gdb имеет встроенную функцию... просто, чтобы ты знала..

-1
отвечен lornix 2023-02-19 22:50

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх