永发信息网

VC++如何跟踪调试

答案:5  悬赏:0  手机版
解决时间 2021-04-02 04:26
VC++如何跟踪调试
最佳答案
1、在编辑器中需要调试的行上打上断点
2、F5开始调试, 当程序运行到断点处就会停下来, 这时你可以通过调用堆栈/局部变量等调试窗口查看执行状态等, 这时也可以选择逐步/逐过程等方式进行跟踪调试。
3、其他调试快捷键:
逐过程调试—F10
逐语句调试—F11
跳到光标处—Ctrl+F10
跳出本循环—Shift+F11
设定断点—F9
删除所有断点—Ctrl+Shift+F9
开始编译 F7
重新编译 –Ctrl+F7
开始调试--F5
停止调试—Shift+F5
重新启动—Ctrl+Shift+F5
全部回答
试试F10
F5
我给链接你吧,我发不了链接
F9设置断点:在光标所在行设置一个断点。
F5运行到断点
F10单步运行
VC调试,一般是需要设置一个断点的,譬如1)int i;2)int j;如果在int j处设置了断点,那么当程序运行到int j时,程序停止,这个时候就可以查看程序各种变量或执行状态了,简单的办法就是把鼠标停在要看的变量上面。会有一个个小的弹出窗口来显示变量状态。
1)设置断点,一种是在代码行的最左边鼠标点击一下,会有个红点出来。快捷键是,将编辑光标--即插入符(不是鼠标光标)停在要设断点的代码行,然后按F9,就会有红点出来。
2)设置的断点,程序一定要能执行到。譬如:
{ //0
int i = 0; //1
if (0 != i) {//2
int j = 1; //3
j++; //4
} else { //5
int j = 3; //6
j += 2; //7
} //8
当把断点设在了4这里,由于int恒为0,因此断点设在4这里,程序是不会经过,也不会停下来让我们查看状态的。并且此时的红点是一个空心红点,表示非命中断点。
3)鼠标右键单击红色断点,会弹出调试快捷菜单,里面会有更丰富的断点命中条件设定,不多说了,楼主自己可以试一下。
4)断点命中后,可以按F5继续运行,如果后面还有断点,就可以被命中。
5)如果在上面的例子中7设了断点后,程序执行到该处停下时,7这行的代码是还未被执行的,这个时候j应该等于3,不是5.
6)如果断点被命中之后,并不想让程序继续执行下去,而只想让程序运行被设断点的这一行,那么只要按F10就可以了。如上面的例子中7设了断点后,程序运行到这里停止,接下去按F10,程序还是会停下,这个时候的程序状态是运行完j +=2的状态,即j等于5.
7)断点不是万能的,如在画窗口的OnDraw函数里是不能设断点的,一设断点,程序停了下来,然后按F5继续执行,由于程序被中断后继续运行,窗口需要被画到屏幕上,这个时候又会触发OnDraw函数,并且断点又会被命中,形成死循环。在很多地方是不能设断点的。相应的情况还有多层嵌套的DLL调用。
8)用TRACE、TRACE0、TRACE1、TRACE2等宏,将调试信息打印到“输出窗口”中。TRACE后面的数字代表带几个参数,如int j = 3;TRACE1(_T("now without F9 in the function OnDraw, we can get debug_info j equals to %d\n"), j);这样在输出窗口中就可以得到在OnDraw函数中代码的执行情况。
9)MFC有个库类专门是将调试信息打印到“输出窗口”中的, CDumpContext的一个对象实例为afxDump。
使用方法:
#ifdef _DEBUG
int j = 3;
LPCTSTR pText = _T("more method for debug");
afxDump << pText << _T(" j = ") << j << _T("\n");
#endif
这个调试类是非常强大的,需要进行专门学习,深入的话,呵呵觉得是异常厉害!
10)TRACE宏默认无法打印UNICODE中文调试信息,要想打印UNICODE但不改变整个工程的字符集,可以在TRACE之前,写代码:
#include
_tsetlocale(LC_CTYPE, _T("chs"));
这样TRACE宏将能正确工作
呵呵,没分呀,居然给你写了这么多,以上都是我的一些常用调试技巧,有些很简单,有些调试技巧比较高级,需要另外进行学习。一开始,建议楼主多使用F9设断点。一定要保证断点被命中,这个时候楼主一定要看一下VC的菜单是有变化的,尤其是“调试”菜单,会多出很多菜单项,可以自己研究研究,还有就是断点命中后,VC窗口也会不一样的,会出现“输出”、“错误”、“监视”等调试窗口,可以试着把关心的程序变量,选中然后拖到监视窗口里,又会出现不一样的东西哦。还可以在监视窗口中写代码:“@err, hr”,代表的是程序线程的error变量。高级的还有反汇编窗口,寄存器窗口,内存窗口等用得相对少些。
好了,一般的基本上全在这里了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想用皇帝的语气形容安全到家怎么说
银川大团结广场打车到鸣翠湖多少钱
我想兑换这个,可是已兑完了,请问什么时候更
'从八千七百万数到一亿数了多少个数
西州蜜瓜和哈密瓜有什么不同
官网说“六级常模群体选自全国五所重点大学的
求叮铃铃铃那种的铃声,很多成人用的那种
歌颂领导的古诗词
求大神告知天涯明月刀丐帮有什么用,丐帮打本
喝减肥速溶咖啡失眠,时间长了会好点吗
牝鸡司辰是什么意思
包心芥菜的介绍
屋面找坡层陶粒砼怎样套定额
我想在常德找一份可以边上班边带孩子的工作,
怎么熬驴骨汤又白
推荐资讯
初三学生用什么复习资料好?
《论语》部分内容的翻译?
双椒肉末水晶粉怎么做
一个细菌也是一个细胞,它和动植物细胞都不同
芜湖有几个县城
谁给算一下,打遍世界高尔夫球场需要多
三氯蔗糖的用途及特性有哪些
一个月后的寒假是称为2016寒假还是2017寒假呢
御龙在天哪个版本
一汽大众五万左右的新车
上海金山到市内有地铁吗?
现在的搬运工是不是工厂直招
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?