在vc调试期间查找源代码中的错误位置

Posted

技术标签:

【中文标题】在vc调试期间查找源代码中的错误位置【英文标题】:find bug position in source code during vc debugging 【发布时间】:2011-12-28 19:15:44 【问题描述】:

我创建了一个 DLL。源代码可以编译和链接。在运行过程中,它以某种方式正常工作,但在某些情况下它会崩溃。此时,VC 只是显示了一个窗口,询问我是 Break 还是 Continue,但它并没有告诉我代码中的错误在哪里。

我的问题是,是否可以以任何方式配置 VC 调试,以便在发生错误的代码位置直接设置断点?或者如何找到源代码的bug位置?

附:我使用 VC Express 2010

【问题讨论】:

好吧,如果你选择'break',是不是会把你带到错误发生的位置? 不...我刚刚得到一个窗口,告诉我“没有可用的源,没有为任何堆栈帧加载符号”。有什么想法吗? 那么您似乎正在运行发布版本,而不是调试版本。你检查过这个吗? 崩溃可能发生在第三方 dll 中,没有可用的符号。选择 Break,然后查看调用堆栈(在 Debug->Windows->Call Stack 中)。双击与您的代码对应的最顶层堆栈框架。 请注意,当符号丢失时,调试器可能无法显示调用堆栈。 他说'没有为任何堆栈帧加载符号'。因此,崩溃不仅发生在第三方 dll 中,而且还发生在不同的线程中。不太可能。 【参考方案1】:

用途:

MessageBox(NULL, NULL, NULL, NULL);

【讨论】:

【参考方案2】:

嗨,我只是想更新一下我的问题。我在代码中发现了错误。它是一个指针类型变量,它采用未初始化的内存地址。我的 DLL 中的代码行是完全正确的,没有导致任何问题。但是在我的代码之外,一个使用这个变量的 DLL 然后得到一个访问保护错误并导致整个程序崩溃。

我发现问题只是基于代码中的计时器值。幸运的是,调用我的 DLL 的母程序可以在它的窗口完全崩溃之前发生这个错误的时间点。

【讨论】:

以上是关于在vc调试期间查找源代码中的错误位置的主要内容,如果未能解决你的问题,请参考以下文章

线程示例,分段错误

在 Visual Studio 调试会话期间查找当前目录?

调试与异常

vc++ 调试时出现Debug Assertion Failed!该怎么办?

在构建期间检查剃刀错误

在没有进行任何代码更改的情况下突然出现错误“调试断言失败错误”。 (在 C++ 代码中)