Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法设置一个依赖于值的断点?_C#_Visual Studio_Visual Studio 2008_Xna - Fatal编程技术网

C# 有没有办法设置一个依赖于值的断点?

C# 有没有办法设置一个依赖于值的断点?,c#,visual-studio,visual-studio-2008,xna,C#,Visual Studio,Visual Studio 2008,Xna,我想知道,在VisualStudio2008中有没有办法设置一个值断点之类的东西?比如说有一个叫做“test”的变量,我想让代码停在整个项目中的任何一行,在那里这个变量的值被改变了 也就是说,我不想要任何特定于行的断点。。我只想让Visual Studio停在对某个变量进行更改的代码行 我的代码非常复杂,如果我能以某种方式获得上面提到的功能,那么调试代码就容易多了 是的,使用条件断点。 将断点设置为要调试的代码行 然后右键单击红色圆圈(断点),单击“条件” 然后设置要为true的条件,以设置断点

我想知道,在VisualStudio2008中有没有办法设置一个值断点之类的东西?比如说有一个叫做“test”的变量,我想让代码停在整个项目中的任何一行,在那里这个变量的值被改变了

也就是说,我不想要任何特定于行的断点。。我只想让Visual Studio停在对某个变量进行更改的代码行


我的代码非常复杂,如果我能以某种方式获得上面提到的功能,那么调试代码就容易多了

是的,使用条件断点。

将断点设置为要调试的代码行

然后右键单击红色圆圈(断点),单击“条件”

然后设置要为true的条件,以设置断点。(例如,“测试”==1时中断)

请记住,您仍然需要在某个地方设置断点,因为它需要在条件中使用变量的作用域


HTH.

是的,使用一个条件断点。

将断点设置为要调试的代码行

然后右键单击红色圆圈(断点),单击“条件”

然后设置要为true的条件,以设置断点。(例如,“测试”==1时中断)

请记住,您仍然需要在某个地方设置断点,因为它需要在条件中使用变量的作用域


HTH.

您应该将变量封装在一个属性中,这样名为
test
的字段就变成
\u test
mTest
或其他任何内容,并且您创建了一个名为test的新属性,其他代码将使用该属性。可以将断点放在属性的setter上

因此,与其

public int test;
你可以

private int _test;

public int test
{
  get { return _test; }
  set { _test = value; } // Breakpoint goes here.
}

而且无需更改
test
的任何用户,除非它们已经被编译,否则您需要再次编译它们。

您应该将变量封装在属性中,以便名为
test
的字段变为
\u test
mTest
或其他任何内容,并创建一个名为test的新属性,供其他代码使用。可以将断点放在属性的setter上

因此,与其

public int test;
你可以

private int _test;

public int test
{
  get { return _test; }
  set { _test = value; } // Breakpoint goes here.
}

无需更改
test
的任何用户,除非他们已经编译过,在这种情况下,您需要再次编译他们。

使用条件断点,在值中键入变量名,并将复选框从“Is true”更改为“Has changed”

要设置此设置,请在显示断点的左侧列上单击鼠标左键。将创建一个断点

然后右键单击出现的红色图示符,并从下拉菜单中选择“条件”


这将使您到达需要的位置。

使用条件断点,在值中键入变量名,并将复选框从“是真”更改为“已更改”

要设置此设置,请在显示断点的左侧列上单击鼠标左键。将创建一个断点

然后右键单击出现的红色图示符,并从下拉菜单中选择“条件”


这将使您到达需要的位置。

变量是类的成员吗?可以用属性替换它吗?是的,变量是类的一个成员,但由于代码是多线程的,并且更改很快发生,因此我很难按顺序了解更改,并且希望在尝试更改此变量的值时收到通知。。这样我就可以跟踪这些变化是如何产生的,从何而来的……也许我误解了你的问题。您不能在“变量更改时”点击断点。您最好在这里使用日志记录。变量是类的成员吗?可以用属性替换它吗?是的,变量是类的一个成员,但由于代码是多线程的,并且更改很快发生,因此我很难按顺序了解更改,并且希望在尝试更改此变量的值时收到通知。。这样我就可以跟踪这些变化是如何产生的,从何而来的……也许我误解了你的问题。您不能在“变量更改时”点击断点。你最好在这里使用日志。不用担心。保持字段私有是一个好主意,如果需要公开字段,只使用属性。属性可以是接口的成员,如果需要将实现更改为(例如)在属性更改时触发事件,则使用属性很容易。另外,如果有人使用您的代码的预编译副本,那么稍后从字段更改为属性并不简单,因为这需要重新编译所有内容。不用担心。保持字段私有是一个好主意,如果需要公开字段,只使用属性。属性可以是接口的成员,如果需要将实现更改为(例如)在属性更改时触发事件,则使用属性很容易。另外,如果有人使用预编译的代码副本,那么以后从字段更改为属性并不简单,因为这需要重新编译所有内容。