代码之家  ›  专栏  ›  技术社区  ›  Jay Conrod

在Visual C++ 2003中附加到一个外部可执行文件

  •  0
  • Jay Conrod  · 技术社区  · 16 年前

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

    3 回复  |  直到 16 年前
        1
  •  2
  •   Aardvark    16 年前

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

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

        2
  •  0
  •   JamesSugrue    16 年前

    如果没有其他答案,我将尝试附加到Visual Studio中的可执行进程,在代码中设置一个断点,当您踏入没有源代码的进程时,它应该请求一个源文件。

        3
  •  0
  •   Anders Sandvig    16 年前

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

    因为您没有源文件,所以它只显示程序集代码,但这可能仍然很有用,因为您还可以检查内存、寄存器等。

    更新

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