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