无法从Mono .dll获取stacktrace,source line#信息

时间:2013-10-08 16:12:59

标签: c# .net mono nullreferenceexception xamarin-studio

我在.NET上运行了一些.dll Windows Server 2012.NET程序集是使用C# OS X上的Xamarin 4.0代码编译而来的。 (是的,我知道奇怪的设置 - 但我是游戏开发者) 一般来说,它们运行得很好,但是在检查Exception信息时,它并不是那么好。我试图从Exception对象中提取信息,但它都是空的。我还尝试将.mdb文件与.dll一起复制,并确保我在Debug中构建,并使用调试符号。 例如这段代码

log.Error (ex.ToString ());
var st = new StackTrace(ex, true);
var frame = st.GetFrame(0);
var line = frame.GetFileLineNumber();
log.ErrorFormat ("st: {0}, frame: {1}, line: {2}", st.ToString (), frame.ToString (), line);

生成这样的输出,只是方法名称,基本上是

System.NullReferenceException: Object reference not set to an instance of an object.
at Mindlube.CD3.RandomMatchMaker.ProcessMatchQueue() [ThreadFiber-1] ERROR Mindlube.CD3.App [(null)] - st:    
at Mindlube.CD3.RandomMatchMaker.ProcessMatchQueue(), frame: ProcessMatchQueue 
at offset 927 in file:line:column <filename unknown>:0:0, line: 0

有关获取更详细Exception信息的任何建议吗?在Windows上使用Visual Studio目前不是一个选项,因为我没有时间重新设计整个开发环境。所以不要说'使用VStudio':)

1 个答案:

答案 0 :(得分:2)

这是因为.NET不了解mdb文件。

遗憾的是,没有工具可以将mdb文件转换为pdb文件,您唯一的选择就是在Windows机器上使用Mono编写自己的应用程序或执行应用程序。