GDB / "malloc_error_break" не определен

Я пытаюсь узнать больше о malloc & free, поэтому я создал dylib, который реализует эти функции, и загружаю его в обычный системный бинарный файл. Однако в нем есть ошибки, и я пытаюсь их отладить.

  • malloc.dylib - моя динамическая библиотека

Вот вывод GDB:

(gdb) set env DYLD_INSERT_LIBRARIES malloc.dylib
(gdb) break malloc_error_break
Function "malloc_error_break" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n 
(gdb) r
Starting program: /bin/ls 
[+] init()
[-] myMalloc requesting: 4096 bytes
[-] memory address: 200000
bash(2035) malloc: *** error for object 0x200000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

Program terminated with signal SIGABRT, Aborted.
The program no longer exists.
(gdb) 

Что меня смущает, так это сообщение

Function "malloc_error_break" not defined.

Когда я пытаюсь установить точку останова на нем. Понятно, что он не ломается, потому что неизвестен.

Любая помощь? Заранее спасибо.

1 ответ

Решение

Причина, по которой вы не можете установить точку останова malloc_error_break является то, что эта функция определена в общей библиотеке, которая еще не была загружена.

Вы должны иметь возможность установить точку останова после запуска программы один раз.

В качестве альтернативы используйте start вместо runи когда программа останавливается mainПосле этого вы сможете установить точку останова на malloc_error_break,

Другие вопросы по тегам