How can I include line numbers in a stack trace wi

2019-01-06 14:10发布

We are currently distributing a WinForms app without .pdb files to conserve space on client machines and download bandwidth. When we get stack traces, we are getting method names but not line numbers. Is there any way to get the line numbers without resorting to distributing the .pdb files?

4条回答
贼婆χ
2楼-- · 2019-01-06 14:35

No. The line numbers are part of the debugging information, which is only stored in the PDB file. That is the reason PDB files exist in the first place.

查看更多
beautiful°
3楼-- · 2019-01-06 14:37

Not the appropriate answer to your question but i have a suggestion. You could incorporate a logging mechanism and get these log files alongside the stack traces. If you include line numbers in your log messages, you can combine the logging information with your stack trace manually.

If you don't want to take up much space you can use limited size log files, this way only the most recent log messages will be kept.

We use log4net library for our logging needs, I recommend you take a look.

查看更多
Rolldiameter
4楼-- · 2019-01-06 14:42

No there is not. All of the information necessary to map lines of IL to the original source file and line number are stored within the PDB. It's not possible to get that information in the stack trace without the PDB.

查看更多
【Aperson】
5楼-- · 2019-01-06 14:49

You can't get a stack trace with line numbers directly from your application unless you bundle the PDB. However, if you have the PDB files for the same version of the app that you ship to your customers, and you don't mind some light scripting, then you can turn the .NET stack trace and IL offsets back into line numbers.

During your build process, use Mike Stall's pdb2xml converter, distributed as part of his excellent MDbg managed code debugger, and store them some place secure (e.g., source control). When you get a stack trace back from the client, you can query the IL offset from the XML data to determine the relevant line number. If your stack traces get submitted to a website, you can even automate the conversion, so that developers will already be getting fully detailed stack traces by the time the cases hit their inbox.

查看更多
登录 后发表回答