是否可以逐个成员调试struct / class初始化成员?

问题描述 投票:2回答:4

初始化这样的类:

var x = new Item()
{
 ID = (int)...,
 Name = (string)...,
 ..
};

我在其中一项作业中收到InvalidCastException。它们很多,即使逐行运行调试器,整个表达式也会发生异常。异常也无法提供任何线索,它试图将其转换为什么。

是否有一种方法可以分别调试每个作业?我已经看到调试器在foreach(x in y)之类的表达式上分别停止了3次,因此似乎有点奇怪,它不在此处执行此操作,并且降低了使用这种方便的初始化语法的吸引力。也许我可以使用更细粒度的调试步骤?

c# visual-studio-2017 vscode-debugger
4个回答
1
投票

[不确定在VS 2017中这是否是一个选项,我只有2019年。在选项->调试->常规下的设置中,取消选中跳过属性和运算符。然后在初始值设定项上设置一个断点,并使用F11逐步执行它(逐步进入)。您将击中每个属性设置器,直到引发异常。


1
投票

您的问题是“是否可以按成员调试结构/类初始化成员?”。]

所以,在前面,我不是直接回答措辞上的that

问题,因为当我仔细阅读您的帖子正文时,听起来最基本的问题是如何确定导致此问题的“吸烟线”根源InvalidCastException发生时就正确。

我在类似情况下发现的是,如果可以在发生InvalidCastException的那一刻使Visual Studio中断,即在该特定行上

,那么调用栈和局部变量将更加直接和有用。

[不幸的是,对于许多异常类型,Visual Studio默认设置抑制了'抛出时中断'。但是,为所有异常打开“抛出时中断”非常容易。只需从以下位置在Visual Studio的“例外”窗口中更改此默认设置:

Default Exception Settings

对此:

enter image description here

这并非“总是”有帮助,但这是一个好的开始。为什么不先尝试快速分辨率是否可行,这很容易。希望这对您的情况有用。


0
投票

如果我缺少某些内容,请原谅(如果那样的话,将删除,但使用这样的无效转换:


0
投票

这次我

© www.soinside.com 2019 - 2024. All rights reserved.