我正在努力了解更多关于malloc& amp; free,所以我创建了一个实现这些功能的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.
当我尝试在其上设置断点时。显然,它并没有因为它未知而破裂。
有任何帮助吗?提前谢谢。
答案 0 :(得分:2)
您无法在malloc_error_break
上设置断点的原因是此功能是在尚未加载的共享库中定义的。
您应该能够在运行程序一次后设置断点。
或者,使用start
代替run
,当程序在main
停止时,您应该然后能够在{{{ 1}}。