我想在动态共享库libexecHook.so中调试一些函数。这个库预装了LD_PRELOAD,用于拦截并重写一些对execve()和朋友的调用。出于调试目的,我已经用符号构建了gmake。从我读过的其他问题,这应该工作:如何在用gdb加载LD_PRELOAD的动态库中调试函数?
gdb ~/tmp/make-dfsg-3.81/make
set exec-wrapper env LD_PRELOAD=/home/marko/execHook.C027/lib/libexecHook.so.0.0.0
start
break execve
break execvp
cont
我确实看到正确设置的断点,
4 breakpoint keep y 0x00007ffff7bd92e0 in execvp at execHook.c:128
但gdb从来没有打破我预先加载的exec ..()函数。在执行期间看着调试输出,我看到我的库函数正在被调用。
您是否曾尝试在启动gdb之前设置LD_PRELOAD? – 2012-02-10 15:25:19
我以前没有尝试过,但没有什么区别。 – Marko 2012-02-10 17:39:31