我可以在#define函数中使用Visual Studio调试器吗?
Can I use Visual Studio debugger within #define functions?
我正在使用Visual Studio 2010(编写c++),并且已经隔离了一个来自调用#define函数的异常。定义的函数有点复杂,我希望能够通过调试器一步找出异常发生的地方。有什么办法可以做到吗?
关系如下:my.h
定义了一个继承自their.h
中声明的第三方类的类。their.h
中的第三方类包括感兴趣的宏,它定义在另一个头文件中,例如' macro.h'。
在调试它之前,需要将宏展开到源代码中。您既可以手动完成,也可以让Visual Studio生成预处理器输出。http://msdn.microsoft.com/en-us/library/8z9z0bx6(v=vs.80).aspx描述了VS 2005的过程。然后,您必须创建一个新的"调试"项目,其中的源代码替换为Visual Studio预处理器生成的。i文件。对于任何重要的项目来说,这都是一个痛苦的过程,所以我将首先尝试手动完成它,特别是因为您确定了导致异常的特定宏,因此您可以尝试手动扩展那个宏。您还可以使用预处理器生成的。i文件进行交叉引用。
UPD:如果有问题的宏在多个位置使用,您可能希望找出哪个位置负责异常。在调试器下运行它(我假设您已经生成了完整的调试信息,如果没有,您应该),并在异常时检查调用堆栈。扩大那个位置。
请注意:开源社区的某些项目因使用宏作为代码混淆工具而臭名昭著(我猜是为了防止他们的商业秘密被逆向工程发现),所以祝你好运…
我面临同样的问题,我很惊讶VS2017在调试期间没有解决宏。用于C/c++的Resharper非常棒,因为它可以部分或完全扩展宏——您可以扩展宏并对其进行grok或重新构建和调试,然后恢复更改。
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在MS Visual Studio 2019中运行QT UI
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio 2019:插入多个C++风格的单行注释
- Visual Studio Code "undefined reference to `WinMain@16'"
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- Visual Studio中的函数声明和函数定义问题
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- Visual Studio mkl_link_tool.exe链接错误
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 不同的Visual Studio版本中缺少.dll
- 用Visual Studio在C++中嵌入Julia
- Visual Studio 2017循环自动向量化问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- Visual Studio在尝试读取resource.txt文件时崩溃
- Visual Studio 2017 不允许我创建 C++ 专用模板