Так какой же адрес? Я не знаю? Как мне узнать адрес остановки? Я попытался найти в 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 до того, как работа была потеряна.
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 ..
+1 отзыв сочувствия - я не оптимистично оцениваю перспективы восстановления ваших данных, учитывая то, что вы уже пробовали. Но это законный отладочный вопрос, четко написанный, с соответствующими деталями: я не думаю, что он заслуживает того, чтобы его опровергли!
Jim Lewis 14 лет назад
1
НРД. Как вы находите конец кучи? Какую команду вы должны набрать, чтобы получить возвращенное вам число? Вы на самом деле знаете? Или ты просто пытаешься мне не помочь?
14 лет назад
0
Это не очень хорошо работает. Я попробовал это:Поэтому я набрал "gcore bla2.bin". И угадайте, я получу? "Неопределенная команда:" gcore ". Попробуйте" help "." Документы Apple говорят, что эта функция недоступна в некоторых системах. Я думаю, это означает, что Mac тоже? Интересно, почему документы Apple содержат общую информацию о Unixy GDB, которая не определяет поведение OSX ...
14 лет назад
0
http://developer.apple.com/mac/library/documentation/DeveloperTools/gdb/gdb/gdb_9.html была ссылка, каким-то образом она сломалась?
14 лет назад
0
Немного поэкспериментировав, я обнаружил, что: «dump двоичная память ~ / dump3.bin 0 0x0000FFFF» выдает некоторые данные, которые не являются полностью нулями. Но ... здесь не было ничего ценного, и это были только первые 64 КБ. Это ... "dump bin memory ~ / dump3.bin 0 0x000fFFFF" создает файл, полностью содержащий нули. 1 МБ нулей. Понятия не имею почему. Я предполагаю (до тех пор, пока кто-то, кто знает, как использовать gdb, действительно поможет), я пересекал «неиспользуемые» области, которые даже не были распределены malloc. И из-за этого GDB выводит нули. В конце концов, Safari содержит более 1 МБ данных;)
14 лет назад
0
Если мне нужно найти регионы, которые фактически выделены, и потенциально есть миллионы выделенных областей ... тогда я не смогу использовать «dump» для получения coredump. Жаль, что ничего подобного gcore не существует в gdb в OSX. Есть ли способ заставить coredump в OS X? Из-за пределов ГБД?
14 лет назад
0
Там есть загружаемая программа в исходном виде. Я скачал, скомпилировал и, ура! Это сработало! Он генерировал дамп ядра почти в 1 ГБ!
Имеет ли информация там не очень важно сейчас. Я узнал, как генерировать coredumps на OSX, что определенно может быть полезным навыком для разработчика программного обеспечения;) Вы никогда не знаете, когда дамп ядра может пригодиться.
Я могу себе представить, что несколько лет я выполняю важную работу, и мне нужен дамп ядра, чтобы выяснить, что происходит, и это приложение "gcore" - то, что мне нужно. Даже если это окупится один раз ... это хорошо.
Вы также можете установить его с помощью: brew install gcore
Guido 10 лет назад
1
Вы можете использовать эти инструкции [здесь] (http://macappstore.org/gcore/) для быстрой установки gcore. Если он говорит, что «bash: brew: команда не найдена», установите homebrew, используя [эту ссылку] (http://coolestguidesontheplanet.com/install-homebrew-os-x-yosemite-10-10-package-manager-unix- Программы/).
I'm_With_Stupid 9 лет назад
0
[`gcore` включен в macOS] (https://opensource.apple.com/source/system_cmds/system_cmds-790.30.1/gcore.tproj/) начиная с 10.12 Sierra. Он расположен в `/ usr / bin / gcore`, а также имеет справочную страницу в` / usr / share / man / man1 / gcore.1`. Это также подтверждается Homebrew, который [отказывается устанавливать `gcore` в` /usr/local/bin`](https://github.com/Homebrew/homebrew-core/blob/bc64d3d55e4031693afc5b14df8bf61c1c978630/Formula/gcore.bb. ) на Сьерра или выше.
GDP2 6 лет назад
0
1
James
Safari сохраняет данные формы для всех форм (если вы не отключили их или сайт не пометил форму как не подлежащую сохранению) в зашифрованном файле базы данных. Вы можете найти пароль для файла в вашей цепочке для ключей входа в систему, и файл находится по адресу ~/Library/Safari/Form Values, так что теоретически вы можете извлечь данные из файла и посмотреть, есть ли то, что вы ввели там.
Тем не менее, у меня был взлом, и я не могу понять, какой формат файла или как он зашифрован, поэтому я не знаю, как на самом деле получить содержимое, я уверен, что кто-то делает, хотя :)
Если Safari действительно сохранил сообщение в этом файле, вы также можете получить его обратно, просто перейдя в ту же форму и напечатав первые несколько букв потерянного текста. Весь должен появиться как предложение автозаполнения.
14 лет назад
0
Автозаполнение не работает для публикации контента. Это работает только для однострочных полей. Не целые статьи с сотнями строк.
14 лет назад
0
Благодарю. Я сомневаюсь, что этот файл содержит содержание сообщения. Мне удалось сбросить 0 до 7ffffFFFF, создав файл 2 ГБ. Тем не менее, он, казалось, содержал полностью нули. Что-то здесь не совсем так. С чего бы это ?: dump memory ~ / bla.bin 0 0x7fffFFFF Результат в файле, полностью содержащем нули? Safari не работает на нулях, не так ли? Я предполагаю, что в нем должен быть какой-то код? ;)
14 лет назад
0
0
alesplin
Вы всегда можете включить вход в GDB set logging on
Затем все, что вы делаете, выводится в файл журнала (обычно это gdb.txt). Таким образом, вы можете просто начать печать памяти с помощью xкоманды, и все будет идти в файл журнала, а также на экран.
0
ychaouche
Посмотрите, есть ли в OSX команда pmap, она покажет вам отображенную память любого запущенного процесса. Обычно это читается из / proc в системах Linux. Далее, если вы ищете конкретную информацию, вы можете использовать команду gdb find. Введите help find в gdb для получения дополнительных инструкций.
-1
lornix
Я знаю, старая тема ...
GDB имеет встроенную команду для вывода образа ядра текущего процесса / программы.
generate-core-file [filename] gcore [filename]
обе команды выполняют одно и то же, имя файла является необязательным, по умолчанию используется значение « core. <process_ip> »
Ха! Похоже, что даже установлена утилита (с gdb) с именем 'gcore', которая также выводит запущенную программу. Конечно, проще приостановить процесс с помощью GDB, а затем сбросить его.
Находить новые вещи каждый день! ... но GDB имеет встроенную функцию ... просто так ты знаешь ..
`(gdb) gcore Неопределенная команда:" gcore ". Попробуйте "помочь". (gdb) generate-core-file Неопределенная команда: "generate-core-file". Попробуйте "помочь". `
Slipp D. Thompson 11 лет назад
0
http://sourceware.org/gdb/onlinedocs/gdb/Core-File-Generation.html, похоже, предполагает, что он не реализован в OS X.
Slipp D. Thompson 11 лет назад
2