我们目前正在分发一个没有.pdb文件的WinForms应用程序,以节省客户端计算机上的空间和下载带宽.当我们得到堆栈跟踪时,我们得到方法名称但不是行号.有没有办法获取行号而不诉诸分发.pdb文件?
如何显示哪个行号导致错误,这是否可能与.NET编译其.exes的方式有关?
如果没有,Exception.Message是否有自动方式显示被淘汰的子?
try
{
int x = textbox1.Text;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
Run Code Online (Sandbox Code Playgroud) 我在ASP.NET Web应用程序中使用以下方法来接收异常的堆栈跟踪:
public static void getStackTraceInfo(System.Diagnostics.StackTrace trace)
{
for (int i = 0; i < trace.FrameCount; i++)
{
int nLine = trace.GetFrame(i).GetFileLineNumber();
int nCol = trace.GetFrame(i).GetFileColumnNumber();
string methodName = trace.GetFrame(i).GetMethod().Name;
}
}
try
{
}
catch(Exception ex)
{
getStackTraceInfo(new System.Diagnostics.StackTrace(ex, true));
}
Run Code Online (Sandbox Code Playgroud)
如果我在Visual Studio 2010开发环境中运行它,它会为我提供完整的行/列/方法名称信息,但在IIS上的生产环境中,它将返回所有0和方法名称为空字符串.
我是否还需要做一些特殊的事情才能使它在IIS上运行?
可能重复:
C#异常没有给行号
在C#winform中,我有一个catch块
Exception.ToString() - >获取抛出异常的代码的异常信息和行号.
在开发中.环境,我得到行号,而当生产中部署相同的EXE时,我没有得到行号,有什么想法吗?
我如何在生产环境中获得line #s?即使我尝试过StackTrace
class's GetFileLineNumber(),但它并没有给我带来生产环境中的#行.
c# ×4
.net ×3
debugging ×2
exception ×2
asp.net ×1
deployment ×1
line-numbers ×1
pdb-files ×1
stack-trace ×1
vb.net ×1
winforms ×1