C++调试经验总结
1. 如何让VS识别OSG的头文件为C++格式?
工具->选项->文本编辑器->文件扩展名 勾选 无扩展名文件映射到 选择 Mricosoft VC++
2.C++调试打断点不进断点可能的原因
(1)右键项目【属性】|【属性配置项】|【C/C++】|【常规】|【调试信息格式】没有设置为【程序数据库(/Zi)】
(2)右键项目【属性】|【属性配置项】|【C/C++】|【优化】|【优化】没有改为【已禁用】
(3)右键项目【属性】|【属性配置项】|【链接器】|【生成调试信息】被设置为【否】了
3.远程调试
-
使用场景
在 某些情况下,c++程序在局域网机器内其他机器上崩溃或运行逻辑不正确(比如测试人员机器上),但在自己开发机器上没有问题,通过分析代码又无法知道什么原因的时候,就可以使用远程调试发现问题
-
如何操作
1.将程序编译带pdb文件放到出现问题机器上
2.拷贝Remote Debugger到问题机器上并运行
使用Visual Studio 20xx版本.在安装版本下找到Remote Debugger(一般路径为C:\Program Files\Microsoft Visual Studio\20xx\Professional\Common7\IDE\Remote Debugger),将Remote Debugger放到需要待调试程序机器上。一般运行版本x64版本(需要根据你使用的Visual Studio 20xx 版本)。运行msvsmon.exe。一般设置菜单【工具】|【选项】在弹出对话框中【身份验证模式】选择【无身份验证】|【允许任何用户进行调试】
3.在visual studio 20xx中菜单【调试】|【附加进程】在弹出对话框中【连接类型】栏选择【远程Windows-无身份验证】,然后在【连接目标】中就能看到远程的机器了。然后在下面的列表中选择需要附加的远程机器上的exe程序了。
注意点:两个机器需要在同一网段
4.从exe启动调试某个dll
有些情况我们需要跳过exe其他功能只调试某个dll,我们可以在项目右键【属性】|【调试】 右侧的【命令】栏中填入要从某个exe来调试这个项目。
5.使用qBreakpad实现程序崩溃代码定位
6.跨语言调用C++ dll的调试
- 使用场景
在某些情况下,需要跨域语言调试C++ dll,列如C#程序以dllimport方式集成的c++ dll,想需要从C#语言程序调试到c++ dll中。 - 怎么操作
1.c++重新编译dll,需要生成pdb文件,并禁用优化。将最新的dll更新到c#中调用地方.
2.visual stuido 20xx中C#项目右键属性调试相关设置中勾选【启动本机代码调试】
浙公网安备 33010602011771号