[英]gdb debug function not in the call stack
我有一個類似於此的代碼段:
int test( /* some arguments */)
{
ret = func(/* some arguments */)
if (ret < 0)
{
/* do this */
}
/* do this */
return ret;
}
對於函數內部的某些錯誤條件,函數func
返回-1。 這種錯誤情況在調用test
函數的100次中發生一次 - 因此我將斷點置於if (ret < 0)
行。 現在我想調試函數func()
內部的內容。 如果在所述行的test
功能中遇到斷點,我該怎么做。
我會給一個突破點
return -1;
在函數本身內 。 按照你的方式,函數的堆棧框架已經被破壞了。 如果你可以移動代碼指針,你可以使用相同的方法再次運行該函數,但如果該函數有副作用,它可能不會以相同的方式作出反應。 我不知道怎么做,也許它需要跳轉命令。
行為是否具有確定性? 如果是這樣,斷點命中計數器對此有好處。 您可以在生成錯誤之前的某處設置一個非常大的計數斷點,也可以在返回的錯誤上中斷,查看計數器,然后將計數更改為在count-1處中斷。 然后,您可以在發生錯誤時調試錯誤,並且斷點可以在代碼中的任何位置,而不僅僅是在確切的點或錯誤處。
條件斷點未得到充分利用......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.