vc调试方法记录一
2023-09-27 14:28:16 时间
VC调试,一般是需要设置一个断点的,譬如1)int i;2)int j;如果在int j处设置了断点,那么当程序运行到int j时,程序停止,这个时候就可以查看程序各种变量或执行状态了,简单的办法就是把鼠标停在要看的变量上面。
explorer.exe 该文件没有与之关联的程序来执行该操作 删了点右键的东西搞出来的问题 其实就是关联出错了,解决:(新建一个temp.reg,内容如下,然后双击导入注册表即可) Windows Registry Editor Version 5.00 [[HKEY_CLASSES_ROOT\Folder\shell\explore\comma...
VC CreateWindow 找不到窗口类,有提示是因为没有调用RegisterClass注册窗口类,可是我已经使用RegisterClassEx注册了! //函数:MyRegisterClass //作用:注册窗口类
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 locale.h
_tsetlocale(LC_CTYPE, _T("chs"));
这样TRACE宏将能正确工作
呵呵,没分呀,居然给你写了这么多,以上都是我的一些常用调试技巧,有些很简单,有些调试技巧比较高级,需要另外进行学习。一开始,建议楼主多使用F9设断点。一定要保证断点被命中,这个时候楼主一定要看一下VC的菜单是有变化的,尤其是“调试”菜单,会多出很多菜单项,可以自己研究研究,还有就是断点命中后,VC窗口也会不一样的,会出现“输出”、“错误”、“监视”等调试窗口,可以试着把关心的程序变量,选中然后拖到监视窗口里,又会出现不一样的东西哦。还可以在监视窗口中写代码:“@err, hr”,代表的是程序线程的error变量。高级的还有反汇编窗口,寄存器窗口,内存窗口等用得相对少些。
好了,一般的基本上全在这里了。
explorer.exe 该文件没有与之关联的程序来执行该操作 删了点右键的东西搞出来的问题 其实就是关联出错了,解决:(新建一个temp.reg,内容如下,然后双击导入注册表即可) Windows Registry Editor Version 5.00 [[HKEY_CLASSES_ROOT\Folder\shell\explore\comma...
VC CreateWindow 找不到窗口类,有提示是因为没有调用RegisterClass注册窗口类,可是我已经使用RegisterClassEx注册了! //函数:MyRegisterClass //作用:注册窗口类
相关文章
- webpack调试结果
- pid 及参数调试方法
- Sql Server中用Print命令轻松调试【存储过程】的技巧或经验!
- aspx文件中调试JavaScript的一种极有效的设置方法(终于js能调试了!)
- VS2010中asp.net调试.ashx程序错误的一个简单方法!
- ARM CPU挂死和总线挂死的DS-5调试方法
- 软件测试和调试有什么区别?
- charles断点调试
- eclipse远程调试Tomcat方法
- GDB调试指北-启动GDB并查看说明信息
- max30100心率血氧健康传感器调试总结备忘
- 《Effective Debugging:软件和系统调试的66个有效方法》——第3条:确保前置条件与后置条件都能够得到满足
- 《Effective Debugging:软件和系统调试的66个有效方法》——第7条:试着用多种工具构建软件,并将其放在不同的环境下执行
- 《Effective Debugging:软件和系统调试的66个有效方法》——第10条:高效地重现程序中的问题
- 《Effective Debugging:软件和系统调试的66个有效方法》——第14条:考虑对软件进行更新
- 《Effective Debugging:软件和系统调试的66个有效方法》——第19条:使调试任务自动化
- 1.几个IDEA高级调试技巧
- vs2017莫名自动退出调试状态可以尝试一下如下的方法
- 使用USB转TTL串口板和ST-LINK调试下载器给STM32单片机下载程序
- vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法
- 真机调试设备不够?华为AGConnect云调试帮你忙
- 关于Unity的两种调试方法
- VC++6.0环境下调试c语言代码的方法和步骤_附图
- eclipse 使用jetty调试时,加依赖工程的源码调试方法
- 【龙芯1B】:关于No LxLink found[1], please try again.问题解决方法和loongide 不能进入调试状态的解决方法以及Windows10家庭版的调试问题的解决方法。
- C/C/C++中暂停调试的三种方法C++中暂停调试的三种方法