我怎么能包括没有PDB堆栈跟踪行号?(How can I include line numbers

2019-06-21 00:51发布

目前,我们正在分发WinForms应用程序没有.pdb文件在客户机上和下载带宽节省空间。 当我们得到堆栈跟踪,我们得到方法的名称,但没有行号。 有没有什么办法让行号,而不诉诸分发.pdb文件?

Answer 1:

除非你捆绑PDB你不能从你的应用程序中获取直接行号的堆栈跟踪。 但是 ,如果你有PDB文件为同一版本,您发货给客户的应用程序,你不介意一些轻的脚本,那么你可以把.NET堆栈跟踪和IL抵消回行号。

在您的构建过程,用迈克失速的pdb2xml转换器 ,分布式为他出色的一部分MDBG托管代码调试 ,并存储他们一些安全的地方(例如,源控制)。 当您从客户端得到一个堆栈跟踪,你可以查询IL从XML数据偏移量来确定相关的行号。 如果您的堆栈跟踪得到提交到网站上,你甚至可以自动进行转换,使开发人员已经由当时的情况下,击中了他们的收件箱中得到充分详细的堆栈跟踪。



Answer 2:

号的行号的调试信息,其中仅存储在PDB文件的一部分。 这是摆在首位存在PDB文件的原因。



Answer 3:

没有相应的回答你的问题,但我有一个建议。 您可以纳入一个日志机制,让这些日志文件旁边的堆栈跟踪。 如果您在您的日志信息的行号,可以将日志记录信息与你的堆栈跟踪手动相结合。

如果你不想占用太多的空间,您可以用有限的大小的日志文件,这样,只有最近的日志信息将被保留。

我们使用log4net的图书馆为我们记录的需求,我建议你看一看。



Answer 4:

不,那里没有。 所有的必要的IL地图的线到原始源文件和行号的信息被存储在PDB中。 这是不可能得到在没有PDB的堆栈跟踪信息。



文章来源: How can I include line numbers in a stack trace without a pdb?