2013-05-31 67 views
2

我使用Visual Studio 2010(编写C++),并分离出一个#定义函数的调用来异常。已定义的函数有点复杂,我希望能够通过调试器来查找异常发生的位置。有没有办法做到这一点?我可以在#define函数内使用Visual Studio调试器吗?

关系如下: my.h定义了一个继承自their.h中声明的第三方类的类。 their.h中的第三方类包含感兴趣的宏,它在另一个头文件中定义,例如`macro.h'。

回答

2

你需要扩展宏进你的源代码,然后才能对其进行调试。您可以手动执行,也可以使Visual Studio生成预处理器输出。 http://msdn.microsoft.com/en-us/library/8z9z0bx6(v=vs.80).aspx描述的过程VS 2005年这样您就可以创建具有与Visual Studio的预处理器生成的。我的文件替换源新的“调试”项目。这对于任何非平凡的项目,所以我想尝试手动首先做它,特别是因为你确定了导致异常的具体宏痛苦,所以你可以尝试手动扩大只是一个。您也可以使用这些预处理器生成的.i文件进行交叉引用。
UPD:如果有问题的宏在多个位置时,你可能要找出哪个位置负责例外。在调试器下运行它(我假设你有完整的调试信息生成,如果没有,你应该),并检查异常时的调用堆栈。只扩展那个位置。
被警告:在开源社区某些项目是臭名昭著的使用宏的代码混淆工具(我想保持自己的商业秘密不被反向工程被发现),那么好的运气了......

+0

找到了两层扩展的手动扩展方法,并进一步隔离了这个错误。不幸的是,它在第​​三方代码中,所以我无法修复它。将只需要解决它。谢谢。 –

1

我面对同样的问题,我很惊讶,VS2017不能在调试过程中解析宏。 Resharper for C/C++是伟大的,因为它可以扩展宏部分或完全 - 可以展开宏和神交它或重建和调试,然后恢复更改。我很确定有一个可以玩的试用版。

相关问题