"Generate Debug Info" 在 VB/C# 中是什么意思?
"none" 和 "pdb-only" 的区别相当明显。但是“pdb-only”和“full”呢?
编译器在构建时会为您生成一个pdb文件,其中包含应用程序的符号,并可供Visual Studio调试器和外部调试器轻松查找问题所在。
"Full" 表示在构建应用程序时会生成完整的调试信息,因此代码本身可以进行调试,包括 [DebuggableAttribute]
,该属性将代码与调试信息(例如符号)关联起来。
"pdb-only" 表示仅在构建时生成pdb调试信息,不会将 [DebuggableAttribute]
添加到已编译的代码中,这是JIT编译器用于将代码链接到调试信息的操作。
更多信息请参见此处。
从我应该使用“full”或“pdb-only”编译发布版本的调试信息吗?。
还可以参见https://learn.microsoft.com/en-us/cpp/build/reference/debug-generate-debug-info
我会选择使用pdb-only。您将无法将调试器附加到已发布的产品上,但如果遇到崩溃转储,则可以使用Visual Studio或WinDBG在崩溃时检查堆栈跟踪和内存转储。
如果您选择了full而不是pdb-only,则将获得相同的好处,除了可直接将可执行文件附加到调试器上。您需要确定这是否适用于您的产品和客户。
VS 2010 中 4 种组合的 DebuggableAttribute 标志值如下:
full & optimize-(01 00 07 01 00 00 00 00)
full & optimize+(01 00 03 00 00 00 00 00)
pdb-only & optimize+(01 00 02 00 00 00 00 00)
pdb-only & optimize-(01 00 02 01 00 00 00 00) - RBT