【问题标题】:What does "Generate Debug Info" mean in VB/C#?VB/C# 中的“生成调试信息”是什么意思?
【发布时间】:2009-01-14 01:07:25
【问题描述】:

“生成调试信息”在 VB/C# 中是什么意思?

“none”和“pdb-only”之间的区别非常明显。但是“pdb-only”和“full”呢?

【问题讨论】:

    标签: c# vb.net


    【解决方案1】:

    编译器会在您构建时为您生成一个 pdb 文件,其中包含应用程序的符号,Visual Studio 调试器和外部调试器可以使用它来轻松查找出错的地方。

    “Full”表示在您构建应用程序时将生成完整的调试信息,因此代码本身将是可调试的,其中包括将代码链接到调试信息的[DebuggableAttribute],例如符号。

    “pdb-only”表示构建时只生成pdb调试信息,不会将[DebuggableAttribute]添加到JIT编译器用来链接代码调试信息的编译代码中。

    更多信息可以找到here

    【讨论】:

    • 很遗憾链接失效了。
    • @Nathan 我能够观察到 DebuggableAttribute 已添加到 debug:full 或 pdb-only 开关的元数据中。它表示按位 DebuggingModes 标志的联合,该标志具有以下值:IgnoreSymbolStoreSequencePoints、EnableEditAndContinue、DisableOptimizations。 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 和优化-(01 00 02 01 00 00 00 00)
    【解决方案2】:

    来自Should I compile release builds with debug info as "full" or "pdb-only"?

    另见https://docs.microsoft.com/en-us/cpp/build/reference/debug-generate-debug-info

    我会用 pdb-only 构建。您将无法附加调试器 到发布的产品,但如果你得到一个崩溃转储,你可以使用 Visual Studio 或 WinDBG 检查堆栈跟踪和内存转储 坠机时。

    如果你使用 full 而不是 pdb-only,你会得到相同的结果 好处,除了可执行文件可以直接附加到 调试器。鉴于您的情况,您需要确定这是否合理 产品和客户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2013-04-01
      • 1970-01-01
      • 2017-08-10
      • 2011-01-19
      • 2011-09-07
      • 1970-01-01
      相关资源
      最近更新 更多