在 Visual C++ 2003 中附加到外部可执行文件
Posted
技术标签:
【中文标题】在 Visual C++ 2003 中附加到外部可执行文件【英文标题】:Attaching to a foreign executable in Visual C++ 2003 【发布时间】:2008-08-27 19:57:39 【问题描述】:我有一个可执行文件(由其他人编译)在我的代码附近遇到了一个断言。我在 Visual C++ 2003 中处理代码,但我没有此特定可执行文件的项目文件(该代码用于构建许多不同的工具)。是否可以在 Visual C++ 的调试器中启动二进制文件并告诉它源代码在哪里?我以前在 GDB 中做过这个,所以我知道它应该是可能的。
【问题讨论】:
【参考方案1】:如果没有该应用程序的 PDB 符号,您将很难对正在发生的事情和位置做出正面或反面。我认为任何源代码信息都只会出现在构建该应用程序时创建的 PDB 文件中。
这是假设 PDB 文件是为此应用程序创建的——我认为这不是发布模式 VC++ 项目的默认配置。既然你在断言,我猜这是一个调试配置?
【讨论】:
【参考方案2】:缺少任何其他答案,我会尝试附加到 Visual Studio 中的可执行进程,在代码中设置断点,当您进入没有源的进程时,它应该要求提供源文件.
【讨论】:
【参考方案3】:是的,这是可能的。只需设置一个空项目并将所需的.exe
文件指定为调试目标。具体方法我不记得了,但我知道这是可行的,因为我在为 Winamp 开发插件时将winamp.exe
设置为调试目标。
由于您没有源文件,它只会显示汇编代码,但这可能仍然有用,因为您还可以检查内存、寄存器等。
更新
如果您在自己的程序中调试断言,您应该能够很好地看到源代码,因为当您使用调试信息编译它时,源文件的路径存储在可执行文件中。
【讨论】:
以上是关于在 Visual C++ 2003 中附加到外部可执行文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2003 中重命名 C++ 源文件?
使用多个引擎将 Visual Studio 2013 附加到托管和 C++ 进程