说我有这样的方法:有没有办法找出引发异常的行?
public void SaveData()
{
try
{
foreach (var somevar1 in list.SomeType1s)
{
CEData.SaveRow(sometype1)
}
foreach (var somevar2 in list.SomeType2s)
{
CEData.SaveRow(sometype2)
}
foreach (var somevar3 in list.SomeType3s)
{
CEData.SaveRow(sometype3)
}
foreach (var somevar4 in list.SomeType4s)
{
CEData.SaveRow(sometype4)
}
foreach (var somevar5 in list.SomeType5s)
{
CEData.SaveRow(sometype5)
}
}
catch (Exception e)
{
logger.DebugException("Rollback Occured with the following stack trace: \r\n"
+ e.StackTrace, e);
Rollback();
throw;
}
}
有没有办法在制动部分练到什么线知道吗?我的堆栈跟踪将只是说它在方法SaveData()中,但不是哪一行失败。
我可以在每行之间添加日志记录,但我宁愿不要(对于调试代码的各种原因)。
所以,我想我会问。是否有可能知道抛出异常时正在执行哪条线?
更多信息:
看起来像行号应该来的标准。我看不到他们的唯一原因是我正在进行Windows Mobile和Compact Framework开发。所以也许他们不包括在紧凑框架中? (我的项目已“满”设置调试信息输出。)
这是一个问题w /运行在发布vs调试,或没有符号存在?堆栈跟踪对于我来说通常都有线路,对于堆栈的每一帧。另外,您是否能够在重新解决此问题时附加调试器?如果是这样,并且您正在使用MSVC,只需调出调用堆栈窗口,然后双击一个更高的堆栈帧... – 2010-08-17 22:44:54
如果您的PDB未部署到映像中,那也可能是问题。至少,我认识一个正在从事基于CF的产品的人。 – 2010-08-17 22:53:49
我试图追踪的错误在Visual Studio中不会发生,但是我嘲笑它并且没有获得行号。我打开了全面的调试,所以我只能假设这是Compact Framework的限制。 – Vaccano 2010-08-17 22:55:39