0

我想在生产环境中获取用于记录异常等的堆栈跟踪(文件名和行号)信息。DLL 安装在 GAC 中。有没有办法做到这一点?

本文介绍了将 PDB 文件放入 GAC:

您可以轻松发现这些,因为他们会说您需要将调试符号(.pdb 文件)复制到 GAC。就其本身而言,这是行不通的。

我知道这篇文章是指使用 VS 进行调试,但我认为它也可能适用于记录堆栈跟踪。

除了取消选中他们说是可选的优化代码外,我已经按照说明回答了这个问题。

我将 dll 和 pdb 复制到 GAC 中,但仍然没有得到堆栈跟踪信息。这是我在堆栈跟踪的日志文件中得到的内容:

OnAuthenticate at offset 161 in file:line:column <filename unknown>:0:0
ValidateUser at offset 427 in file:line:column <filename unknown>:0:0
LogException at offset 218 in file:line:column <filename unknown>:0:0

我正在使用 NLog。

我的 NLog 布局是:

layout="${date:format=s}|${level}|${callsite}|${identity}|${message}|${stacktrace:format=Raw}"

${stacktrace:format=Raw} 是相关部分。

4

2 回答 2

1

试试小写的 raw:

   ${stacktrace:format=raw}

如果这不起作用,请尝试:

   ${exception:format=stacktrace}
于 2009-03-20T07:30:15.620 回答
0

试试这个:

StringWriter sw = new StringWriter();
new Throwable().printStackTrace(new PrintWriter(sw));
String stackTrace = sw.toString();

字符串 stackTrace 将具有当前线程的 stackstrace

于 2009-07-21T16:17:29.063 回答