视觉工作室。如何通过附加到进程来构建调试工作的DLL(在命令行中)?据我所知,这就是我正在做的事情。
为了构建 *.cpp 文件,我把这些标志 cl /Zi /Od
为了制作 DLL,我把这些链接 /DEBUG
我有数十个 cpp 文件,这些文件后来被制作成 DLL。但是附加到进程调试不起作用......
我必须放置更多标志吗?如果 DLL 有足够的调试信息,我如何检查它本身?
谢谢!
视觉工作室。如何通过附加到进程来构建调试工作的DLL(在命令行中)?据我所知,这就是我正在做的事情。
为了构建 *.cpp 文件,我把这些标志 cl /Zi /Od
为了制作 DLL,我把这些链接 /DEBUG
我有数十个 cpp 文件,这些文件后来被制作成 DLL。但是附加到进程调试不起作用......
我必须放置更多标志吗?如果 DLL 有足够的调试信息,我如何检查它本身?
谢谢!
你有 DLL 的 PDB 文件吗?它是否包含所有 obj 的调试信息?除了下面提到的选项之外,您是否也在使用 cl /c 编译文件。您的编译结果是 - 在链接它们之前复制的对象。是否也复制了 pdb?
这些是导致您的问题的各种原因
假设您有 3 个文件 a.cpp、b.cpp 和 c.cpp,这就是您可以尝试的
cl /c /Zi /Fd c:\mypath\mydll.pdb a.cpp
cl /c /Zi /Fd c:\mypath\mydll.pdb b.cpp
cl /c /Zi /Fd c:\mypath\mydll.pdb c.cpp
link /DEBUG fullpathtoa\a.obj fullpathtob\b.obj fullpathtob\c.obj whatever other options.
然后复制 pdb 和 dll 并尝试调试它。
另一件事是,在大多数调试器中,您都有一个对话框,显示所有已加载的二进制文件和已加载的相应 PDB。
例如。
Binary PDB
a.exe c:\abc\a.pdb
b.dll c:\pqr\b.pdb
c.dll Default symbols loaded.
加载的默认符号意味着它没有找到 PDB。您可以右键单击 etc 并将调试器指向与 c.pdb 对应的 PDB 的路径
在 Visual Studio 中,您将在 Debug Menu Option-->Windows-->Modules 中看到上述内容。“符号状态”列将显示 PDB 的路径或“加载的默认符号”。它为您的 dll 显示了什么?