【问题标题】:setting up assemblies for debugging设置程序集以进行调试
【发布时间】:2012-06-08 21:17:29
【问题描述】:

.Net 程序集具有用于调试的 pdb 文件。 PDB 文件指向确切的源位置以及其他详细信息。如果我正在构建程序集并在本地调试它,这很好。当您需要在其他计算机上部署程序集时,问题就开始了。在这种情况下进行调试可以通过多种方式完成; 1.您可以将源放在共享位置并在VS要求时指向该位置2.您可以使用Source服务器并指向源代码管理并配置VS以使用它

Java 有源 jar,可以与实际 jar 本身一起部署并使用它进行调试。这似乎是一个更简单、更整洁的解决方案。我们可以用 .Net 做到这一点吗(我知道 sourcepack 提供了类似的功能)?或者有更好/更简单的解决方案吗?

【问题讨论】:

  • 通常你有一个版本控制系统,这使得你的代码可以从任何地方访问。
  • 你是主要还是完全在你的局域网上调试?
  • @SoMoS - 我确实有一个源代码控制系统,我确实意识到我可以对 PDB 进行源索引,并将链接到 SCM 系统。我实际上是在尝试查看不需要托管符号服务器等的场景。我的程序集旁边有 PDB,我怎样才能轻松地为其提供对源的访问。希望这是有道理的
  • @wal - 不确定我是否正确理解您的问题。我说的是调试任何程序集。您是否建议我将代码放在共享的公共驱动器中并从该位置构建程序集?这样就可以查到源头了?我们确实有这个系统,但它不是很灵活,而且从共享驱动器构建的速度较慢。
  • @praskris 您不需要从该位置构建它。您可以从任何位置构建它。我建议将源代码和 pdb 放在一个中心位置(如果您没有使用 dll 部署 pdb),然后当您需要调试时,您可以指示 VS 从共享位置加载 pdb 并将 VS 指向源代码(VS会在pdb文件指定的嵌入位置找不到源时提示)

标签: .net debugging .net-assembly visual-studio-debugging pdb


【解决方案1】:

.NET 程序集实际上不需要 PDB! PDB 文件不指向确切的源位置,它只包含相关源文件的 GUID!

查看how PDB and sources files are linked的更多详情

更多信息请见John Robbins....

.NET PDB 仅包含两条信息,源文件名及其行和局部变量名。所有其他信息都已在 .NET 元数据中,因此无需在 PDB 文件中复制相同的信息。

【讨论】:

  • 关键部分是它包含的“局部变量名称(和信息)”。
  • @mox 你是在暗示你不需要 pdb 来有效调试吗?
  • @wal - 我没有任何暗示。对于 .Net 程序集,按照 John Robbins 的描述使用 PDB。
  • @wal - 我写了上面提到的文章是如何链接 PDB 和源文件的。
  • 谢谢,我通读了 John Robbins 的文章。很有见地,但确实提到如果您不对其进行源索引,源文件的路径将被存储。如果源文件未存储在 PDB 文件中,我想不出任何其他方式让调试器获取源文件的位置。本人知识有限,如有错误请指正。 ...if you use a source file MYCODE.CPP in C:\FOO, what's embedded in the PDB file is C:\FOO\MYCODE.CPP. This is probably what you already suspected, but I just wanted to make it clear.
猜你喜欢
  • 2011-04-10
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
相关资源
最近更新 更多