UWP调试构建中Exception.ToString()与Environment.StackTrace缺失行号问题
UWP调试构建中StackTrace缺失文件名和行号的解决方法
确认项目调试信息生成设置:
右键项目→属性→生成→高级→调试信息,选择完整(Full)。UWP项目默认可能未设置为完整,这会导致Exception.ToString()和Environment.StackTrace无法获取行号信息,即便调试器能加载符号。关闭调试构建的代码优化:
在项目属性的生成选项卡中,确保未勾选优化代码。代码优化会打乱代码结构,导致行号映射失效,即便符号加载正常,也无法在堆栈跟踪中显示行号。使用
StackTrace类强制获取行号:
UWP中Environment.StackTrace默认不包含文件和行号,可通过System.Diagnostics.StackTrace的重载构造函数主动捕获:var stackTrace = new System.Diagnostics.StackTrace(exception, true); foreach (var frame in stackTrace.GetFrames()) { string fileName = frame.GetFileName(); int lineNumber = frame.GetFileLineNumber(); // 按需拼接堆栈信息 }第二个参数
true表示启用文件和行号捕获,只要PDB符号完整就能获取到对应信息。检查PDB文件的生成与部署:
确保调试构建时生成了对应的.pdb文件,且与应用包在同一目录。UWP调试包部署时,PDB文件需同步部署到调试环境,否则运行时方法无法读取行号信息。
内容的提问来源于stack exchange,提问作者BCA
相关产品推荐
相关产品推荐

