我正在嘗試使用this answer來生成兩行代碼之間的指令跟蹤。有沒有一種方法可以使用純gdb腳本來測試我們是否處於斷點?
不幸的是,while
循環中的條件是一個簡單的計數,我需要繼續運行循環,直到源代碼中的特定行代碼到達。
是否存在一種方法來檢查我們是否位於純代碼gdb
腳本中的特定代碼行或特定斷點處?
我知道使用Python API的解決方案here。我也知道pin-instat,但我想知道這是否可以用純粹的gdb完成。
我正在嘗試使用this answer來生成兩行代碼之間的指令跟蹤。有沒有一種方法可以使用純gdb腳本來測試我們是否處於斷點?
不幸的是,while
循環中的條件是一個簡單的計數,我需要繼續運行循環,直到源代碼中的特定行代碼到達。
是否存在一種方法來檢查我們是否位於純代碼gdb
腳本中的特定代碼行或特定斷點處?
我知道使用Python API的解決方案here。我也知道pin-instat,但我想知道這是否可以用純粹的gdb完成。
如果你想要做什麼用這種方式
1)獲取有關pc
的線路信息,你想達到
使用info line
或使用disas /m
獲取有關特定行的地址信息的代碼。
2)寫出類似的循環在Tracing/profiling instructions
while $pc != ADDRESS-FROM-FIRST-STEP
si
end.
這樣,您將繼續運行循環,直到代碼的源代碼的特定行達到
使用大多數系統啓用的ASLR,地址將在運行期間發生變化。順便說一下,我的意思是迴應評論,但我失去了它的蹤跡。 – merlin2011
1)你在'gdb'下運行,不是嗎?可以使用'set disable-randomization'禁用gdb下的隨機化。 2)Linux上的ASLR可以有三種可能的值。在我的電腦上,它的值是2,似乎當我運行一個程序時,函數的地址是相同的,但堆的地址是不同的。 –
如果1)使用'信息行'或使用'disas/m'獲取有關特定代碼行地址的信息,以及何時2)'while $ pc!= ADDRESS' | 'si' | '結束'?這樣,您將繼續運行循環,直到源代碼中的特定行代碼到達。 –