C++ DLL 不加载调试符号
C++ DLL not loading debug symbols
在我的解决方案中,我有两个项目:一个是 C++ DLL,另一个是 C# Windows Forms EXE(后者对前者具有构建依赖性)。 DLL 正确链接并工作(我的测试函数 returns 至少是正确的数字)。实际有用的功能是在某处抛出异常,但我无法调试它,因为正在加载 C++ 项目的 none 个调试符号。
确定正在生成 PDB! EXE、DLL 和 PDB 都在同一个文件夹中。我什至将他们的目录添加为符号文件位置之一(选项 > 调试 > 符号),但这没有做任何事情。
显然,模块 window 应该告诉你一些事情,但我的 DLL 没有出现在那里(但它仍然可以正常工作)。
我使用的是未编译的 x64 DLL headers,如果这有什么不同的话。
编译器命令行:
/GS /W3 /Zc:wchar_t /I"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\MusicStreamingClient\RapidJson\include\" /ZI /Gm /Od /Fd"x64\Debug\vc140.pdb" /Zc:inline /fp:precise /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "MUSICSTREAMINGCLIENT_EXPORTS" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /Fa"x64\Debug\" /EHsc /nologo /Fo"x64\Debug\" /Fp"x64\Debug\MusicStreamingClient.pch"
链接器命令行:
/OUT:"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\x64\Debug\MusicStreamingClient.dll" /MANIFEST /NXCOMPAT /PDB:"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\x64\Debug\MusicStreamingClient.pdb" /DYNAMICBASE "E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\MusicStreamingClient\RapidJson\x64\Debug\RapidJson.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /IMPLIB:"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\x64\Debug\MusicStreamingClient.lib" /DLL /MACHINE:X64 /INCREMENTAL /PGD:"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\x64\Debug\MusicStreamingClient.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64\Debug\MusicStreamingClient.dll.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
如有任何帮助,我们将不胜感激。
您当前仅调试托管代码。本机符号将不可见。您需要更改调试选项以同时为您的项目启用托管模式和本机模式。
在我的解决方案中,我有两个项目:一个是 C++ DLL,另一个是 C# Windows Forms EXE(后者对前者具有构建依赖性)。 DLL 正确链接并工作(我的测试函数 returns 至少是正确的数字)。实际有用的功能是在某处抛出异常,但我无法调试它,因为正在加载 C++ 项目的 none 个调试符号。
确定正在生成 PDB! EXE、DLL 和 PDB 都在同一个文件夹中。我什至将他们的目录添加为符号文件位置之一(选项 > 调试 > 符号),但这没有做任何事情。
显然,模块 window 应该告诉你一些事情,但我的 DLL 没有出现在那里(但它仍然可以正常工作)。
我使用的是未编译的 x64 DLL headers,如果这有什么不同的话。
编译器命令行:
/GS /W3 /Zc:wchar_t /I"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\MusicStreamingClient\RapidJson\include\" /ZI /Gm /Od /Fd"x64\Debug\vc140.pdb" /Zc:inline /fp:precise /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "MUSICSTREAMINGCLIENT_EXPORTS" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /Fa"x64\Debug\" /EHsc /nologo /Fo"x64\Debug\" /Fp"x64\Debug\MusicStreamingClient.pch"
链接器命令行:
/OUT:"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\x64\Debug\MusicStreamingClient.dll" /MANIFEST /NXCOMPAT /PDB:"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\x64\Debug\MusicStreamingClient.pdb" /DYNAMICBASE "E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\MusicStreamingClient\RapidJson\x64\Debug\RapidJson.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /IMPLIB:"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\x64\Debug\MusicStreamingClient.lib" /DLL /MACHINE:X64 /INCREMENTAL /PGD:"E:\Users\Sean\Documents\Visual Studio 2015\Projects\MusicStreamingClient\x64\Debug\MusicStreamingClient.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64\Debug\MusicStreamingClient.dll.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
如有任何帮助,我们将不胜感激。
您当前仅调试托管代码。本机符号将不可见。您需要更改调试选项以同时为您的项目启用托管模式和本机模式。