【问题标题】:Line numbers do not appear in stack trace of exceptions thrown from COM+ Applications. Why?行号不会出现在 COM+ 应用程序引发的异常的堆栈跟踪中。为什么?
【发布时间】:2011-09-28 16:42:10
【问题描述】:

标题基本上概括了它。

我有一个使用 VB.NET 2010 实现的 COM+ 服务器应用程序,它被配置为使用 http://msdn.microsoft.com/en-us/library/windows/desktop/ms685134(v=vs.85).aspx 中描述的过程从其自己的 .config 文件中收集数据。

到目前为止,它似乎很有效。而且我愚蠢地假设它应该足以知道在哪里选择包含调试信息的 .pdb 文件,并在出现意外异常时包含此类信息。 (.pdb 文件就在那里,顺便说一句……就在构成 COM+ 应用程序的 .dll 文件旁边)。

看来我错了,毕竟; COM+ 应用程序抛出的所有异常都显示被调用的函数,但不显示相关的行号。

我是否需要做其他事情才能使我的 COM+ 应用程序不仅返回函数名,而且返回堆栈跟踪中的行号,该堆栈跟踪由引发的异常返回?

【问题讨论】:

  • 您是否将发布版本的“生成调试信息”选项更改为“完整”?必填。
  • 是的。我刚刚确认了。请注意,我使用的不是“发布”版本,而是“调试”版本。需要明确的是:两个构建,“调试”和“发布”,都将“生成调试信息”设置为“完整”。
  • 运行时似乎没有找到 PDB 文件。如果我猜测它听起来像应用程序根仅用于配置,而不是用于定位 PDB 文件的运行时。作为测试,我会将 PDB 文件复制到 system32 目录,看看是否有帮助。

标签: .net stack-trace com+ line-numbers


【解决方案1】:

宾果游戏!

在断断续续地寻找答案 1 年后,我想我终于找到了可行的方法。

您会看到,作为推荐做法,MS 要求您将 COM+ 公开的程序集放在 GAC 中。你猜怎么了?如果将 .pdb 文件放在包含这些程序集的 GAC 文件夹中,突然之间,.NET 现在可以找到该死的 .pdb 文件了!现在所有堆栈跟踪都包含行号!耶!

不幸的是,似乎没有办法(或工具)将 .pdb 文件自动放置在 GAC 中的 .dll 文件旁边。哦,好吧,我猜我得在安装程序上做...

但是现在,任务完成了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2011-08-10
    • 1970-01-01
    • 2013-06-11
    • 2018-06-07
    相关资源
    最近更新 更多