VC,Windbg,gdb执行到指定代码行方法
在調試的時候,當執行到一段代碼時,為了調試或者其他目的需要,有時候需要對一些或者幾行代碼多次執行或者跳過幾行代碼的執行,這是很有用的,比如下面的一個循環:
for(int i=0;i<num;i++) { //do something }也許num很大,但是我們又想看看前面幾次循環執行的效果,這時候就需要前面提到的調試功能了,直接跳出循環,執行循環后面的代碼。當然也可以跳到循環前面的代碼執行,下面以對VC,Windbg和Linux的gdb三個調試器分別進行說明。
1.VC調試器的方法
VC對源代碼級的調試支持得還是相當的好,特別是應用層代碼的調試,而且執行到指定代碼行的功能也是相當的簡單,如下圖所示。
將鼠標放在當前執行的代碼行位置,這時會看到提示,說可以拖動箭頭到想執行的代碼行位置,然后就可以繼續執行了。
2.Windbg方法
windbg可以用兩種方法來達到這個目的。
第一種方法,如下圖所示。
將焦點定位到你想執行的代碼行,然后選擇Edit菜單,選擇“Set Current Instruction”子菜單即可,效果和VC一樣。
第二種方法要麻煩一些,如下圖所示。
可以通過修改eip的地址來達到執行指定代碼行的功能,對x64位系統來講,程序指針寄存器是rip,32位是eip,可以先執行r命令,查看寄存器的狀態,如上圖所示。然后切換到匯編模式,查看你想執行的那一行代碼的地址,然后執行r rip=address命令來達到相同效果。
3.Linux gdb
gdb的功能很強大,要達到這個效果也很簡單,如下圖所示。
執行jump命令即可,如上圖所示,想要到16行去執行,執行jump 16就可以了。
總結
以上是生活随笔為你收集整理的VC,Windbg,gdb执行到指定代码行方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Linux]搜索文件是否包含指定内容并
- 下一篇: 改变vim注释的颜色