0

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

4

3 回答 3

2

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

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

于 2008-09-05T16:04:29.873 回答
0

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

于 2008-08-27T20:16:59.980 回答
0

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

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

更新

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

于 2008-08-27T20:18:54.407 回答