附加到 Visual C++ 2003 中的外部可执行文件

Attaching to a foreign executable in Visual C++ 2003

提问人:Jay Conrod 提问时间:8/28/2008 最后编辑:Kent FredricJay Conrod 更新时间:12/28/2008 访问量:226

问:

我有一个可执行文件(由其他人编译),它在我的代码附近命中了一个断言。我在 Visual C++ 2003 中处理代码,但我没有这个特定可执行文件的项目文件(代码用于构建许多不同的工具)。是否可以在 Visual C++ 的调试器中启动二进制文件并告诉它源在哪里?我以前在 GDB 中做过这件事,所以我知道这应该是可能的。

调试 Visual-Studio-2003

评论


答:

0赞 JamesSugrue 8/28/2008 #1

如果没有任何其他答案,我会尝试附加到 Visual Studio 中的可执行进程,在代码中设置断点,当您步入没有源代码的进程时,它应该要求提供源文件。

0赞 Anders Sandvig 8/28/2008 #2

是的,这是可能的。只需设置一个空项目,并将所需的文件指定为调试目标。我不记得具体是怎么回事,但我知道这是可行的,因为我在为 Winamp 开发插件时曾经设置为调试目标。.exewinamp.exe

由于您没有源文件,因此它只会显示汇编代码,但这可能仍然有用,因为您还可以检查内存、寄存器等。

更新

如果你在自己的程序中调试一个断言,你应该能够很好地看到源代码,因为当你使用调试信息编译源文件时,源文件的路径存储在可执行文件中。

2赞 Aardvark 9/6/2008 #3

如果没有该应用程序的 PDB 符号,您将很难对正在发生的事情和位置做出正面或反面。我认为任何源代码信息都只会出现在构建该应用程序时创建的 PDB 文件中。

这是假设 PDB 文件是为此应用程序创建的 - 我认为这不是发布模式 VC++ 项目的默认配置。既然你断言,我猜这是一个调试配置?