我想在動態共享庫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