调试时无法设置下一个语句

时间:2015-09-08 10:13:06

标签: c# visual-studio-2013 visual-studio-2015 .net-4.5 stack-unwinding

我在VS2015中调试我的项目,并且在我的代码中抛出异常。 当我尝试设置下一个语句时,我收到下面显示的错误消息。当我在VS2013中调试相同的解决方案时,我能够设置下一个语句没有任何问题。这种行为似乎发生在多种异常中。

Microsoft Visual Studio error window: "Unable to set the next statement. The attempt to unwind the callstack failed."

我可以重现问题的示例代码如下所示。当TestMethod1中的最后一行抛出异常时,我可以很容易地回到VS2013中的第一个语句,但不会回到VS2015中。

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        object o = new object();
        o = null;
        var e = o.ToString();
    }
}

1 个答案:

答案 0 :(得分:6)

在“异常设置”中,您需要为正在抛出的特定CLR异常类型启用Break Thrown,或者&lt;此列表中不包含的所有公共语言运行时异常&gt;用于自定义例外。在此特定示例中,启用JSONArray jsonArray = new JSONArray(ids); for (int i = 0; i < jsonArray.length(); i++) { JSONObject ques_obj = jsonArray.getJSONObject(i); JSONObject question = ques_obj.getJSONObject("question"); JSONArray q = question.getJSONArray("qclasslist"); JSONArray f = question.getJSONArray("focuslist"); JSONArray l = question.getJSONArray("latlist"); for (int a = 0; a < q.length(); a++) { JSONObject q_obj = q.getJSONObject(a); text = q_obj .getString("value"); } for (int b = 0; b < f.length(); b++) { JSONObject f_obj = f.getJSONObject(b); text = f_obj.getString("value"); } for (int c = 0; c < l.length(); c++) { JSONObject l_obj = l.getJSONObject(c); text = l_obj.getString("value"); } JSONArray jArray1 = question.getJSONArray("evidencelist"); for(int d = 0; d < jArray1 .length(); d++) { JSONObject object3 = jArray1.getJSONObject(d); text = object3.getString("text"); } } 应该允许您按预期设置下一个语句。

如果您希望在不破坏所有未列出的CLR例外的情况下中断特定的自定义例外,则可以将它们添加到“例外设置”中的列表中并相应地进行选择。

我在MSDN上询问了这个问题,并从那里传递信息。 [Source]