一千萬個為什麽

搜索

我的應用可以安排gdb斷點或觀看嗎?


有沒有辦法讓我的代碼在一個內存位置插入一個斷點或觀察將被gdb尊重? (並且可能在沒有附加gdb時沒有效果。)

我知道如何在gdb會話中執行諸如gdb命令之類的操作,但是對於某些類型的調試,如果你知道我的意思,那麽以編程方式執行它會非常方便 - 例如,錯誤只發生在特殊情況,不是調用崩潰程序的前11,024次中的任何一次,或者是內存位置被修改的第一次43028,503次,因此在例程上設置一個簡單的斷點或對變量進行觀察是沒有用的 - 這都是錯誤的陽性。

我主要關心Linux,但對OS X(或Windows,但顯然不是gdb)存在類似的解決方案感到好奇。

最佳答案

對於斷點,在x86上你可以在任何位置打破

asm("int3");

不幸的是,我不知道如何檢測你是否在gdb內運行(在調試器外執行該操作會使用SIGTRAP信號終止你的程序)

轉載註明原文: 我的應用可以安排gdb斷點或觀看嗎?

猜你喜歡