Visual Studio.如何构建DLL(在命令行中),通过附加到进程来调试工作

Visual Studio. How to build DLL (in commandline) that debugging works by attaching to process?

本文关键字:进程 工作 调试 命令行 何构建 Studio 构建 Visual DLL      更新时间:2023-10-16

Visual Studio。如何建立DLL(在命令行),调试工作附加到进程?就我所知,这是我正在做的。

为了构建*.cpp文件,我放置了这些标志cl/Zi/Od

要制作DLL,我把这些link/DEBUG

我有几十个cpp文件,后来被制成DLL。但是附加到进程调试不起作用…

我要放更多的标志吗?如何检查DLL本身是否有足够的调试信息?

谢谢!

您有DLL的PDB文件吗?它是否包含所有objs的调试信息?除了下面提到的选项之外,您还使用cl/c编译文件吗?是编译的结果-在链接它们之前将objs复制到某个地方。pdb也复制了吗?

这些是导致你的问题的各种原因

  1. 您正在将objs复制到某个目录,然后再链接它们。链接时无法访问pdb。
  2. 链接前的一些清理导致PDB被删除。

假设你有三个文件a.p p, b.p p &c.p,这是你可以尝试的

cl /c /Zi /Fd c:mypathmydll.pdb a.cpp
cl /c /Zi /Fd c:mypathmydll.pdb b.cpp
cl /c /Zi /Fd c:mypathmydll.pdb c.cpp
link /DEBUG fullpathtoaa.obj fullpathtobb.obj fullpathtobc.obj whatever other options.

然后复制pdb和dll &试着调试一下

另一件事是,在大多数调试器中,你有一个对话框,显示所有已加载的二进制文件和相应的已加载的pdb。

例如

Binary      PDB
a.exe       c:abca.pdb
b.dll       c:pqrb.pdb
c.dll       Default symbols loaded.

默认符号加载意味着它没有找到PDB。你可以右键点击etc &将调试器指向c.pdb

对应的PDB路径。

在Visual Studio中,您将在"调试菜单选项->Windows->模块"中看到上述内容。"符号状态"列将显示PDB或"默认加载符号"的路径。它为你的dll显示了什么?