调试 - 下一步?

时间:2012-03-15 13:31:18

标签: c# visual-studio debugging

以下代码行导致我出现异常

using (new INVU.API.CallContextStore())
{
plug.Instance.AddDocuments(new Int32[] { val_pid }, val_ptype, val_doccat, val_subcat, val_doctype, val_notes, val_summary, SummaryAppendOptions.None, val_docStatus, new String[] { PDFFile });
}

这是个例外。

System.Exception was caught
 Message=Object reference not set to an instance of an object. - Error when trying to save    document
 Source=SimsBridge

 StackTrace:
   at SimsBridge.Bridge.AddDocuments(Int32[] personIds, Int32 PersonType, String docCatagory, Int32 subCatagory, String docType, String notes, String summary, SummaryAppendOptions summaryOptions, String documentStatusCode, String[] filePaths)
   at ManagedScanDesktop.Form1.SimsScanComplete(String[] files) in C:\Working\ManagedScanDesktop 1.8\v1.8\ManagedScanDesktop\ManagedScanDesktop\Form1.cs:line 2619
InnerException: 

我一直试图将这个调试好几个小时,而我已经学到了很多关于这个特定程序如何工作的知识我还没有真正得到任何结论。

我之前对一个关于使用调试信息的问题做了一些回答,这似乎证实了我对异常的初步想法。

Correctly using stacktrace to debug

现在,我首先假设SimsBridge对象没有被初始化,但我发现代码中的这个位置发生了(将user / pass作为参数)。此时我已成功登录,服务器的详细信息将返回并显示在我的表单上。

Little screenshot to show what I mean... http://i41.tinypic.com/10dejao.jpg

(没有参数也为空)

网络错误是我的另一个怀疑,因为我已经看到这个程序打包的exe安装程序正常工作。所以它应该工作。 但是,我可以登录的事实与此相反......

我感觉有点迷失在哪里看下一个,我真的可以问这里没有人在这里工作。

问:尝试追踪此问题原因的下一步是什么?

1 个答案:

答案 0 :(得分:2)

如果所有参数都不为空(所有这些val_事物)并且plug.Instance都不为空,则错误可能位于AddDocuments内部方法。如果您无法控制此代码(例如,它是第三方),那么您所能做的就是确保正确使用代码。否则,您将无法向图书馆的作者发布问题。

你所知道的是,某处某事是空的。你的东西似乎都不是null(除了潜在的DatabaseName),所以只留下你正在调用的方法的内部状态。

对我来说,下一步是创建一个小应用程序,除了你要做的事情(在这种情况下为AddDocuments)之外什么都不做,看看你是否可以使它运行,或者复制问题再次。如果你可以使它工作,那么就是代码审查原始内容的情况,看看你是否在任何地方都发生了轻微的逻辑错误。如果您可以复制它,请将其作为一个问题发布给代码作者,看看他们说了什么。