不要在堆栈跟踪中显示构建计算机的文件路径

Emi*_*elt 23 c# exception stack-trace debug-symbols

我目前正在开发一个C#应用程序,它已经拥有了自己的日志记录.抛出异常时,异常将保存到列表中,用户可以通过列表视图查看该列表.当用户在列表视图中单击异常时,异常的堆栈跟踪将显示在文本框中.但即使我在远程计算机上执行程序,堆栈跟踪也会显示从编译应用程序的计算机到原始源文件的文件路径.

例如:

at C:\Folder1\Folder2\Class1.cs:81
at C:\Folder1\Folder2\Class2.cs:65
at C:\Folder1\Folder1\Class3.cs:21
Run Code Online (Sandbox Code Playgroud)

只显示没有文件夹的源文件会很好......

我该如何改变这种行为?

有原生解决方案吗?或者我只需要做一些字符串操作?

Adr*_*der 23

您可能已经安装了应用程序的.pdb文件.如果没有.pdb文件,则不应显示文件位置.

查看Windows服务中异常堆栈跟踪中的获取行号

在没有pdb的堆栈跟踪中包含行号?

除非捆绑PDB,否则无法直接从应用程序获取带有行号的堆栈跟踪.

  • 为什么这是公认的答案?它回答的问题很少。 (2认同)

nai*_*sts 7

文件路径包含在" 程序数据库 "文件(.pdb)中.这些文件是在编译期间创建的,这些文件中的路径与编译机器上的路径相同.

您可以从安装中删除.pdb文件,但这样您的堆栈跟踪将只是现在的一半,因为它不会告诉您发生错误的行.通常,您不会在附加了Pdb文件的生产环境中运行代码.

如果你想保留"有趣的堆栈跟踪",你可以考虑在调用之后对文件夹名称进行字符串替换exceptionObject.toString().

  • 为什么不_...在附加 Pdb 文件的生产环境中运行代码_? (3认同)