当创建在Visual Studio中的跟踪点(右键单击该断点,然后选择“当打......”),对话框中有这样的文字,重点煤矿:
可以通过将其放置在大括号中包括在所述消息中的变量或其他表达式的值...
什么表情被允许?
当创建在Visual Studio中的跟踪点(右键单击该断点,然后选择“当打......”),对话框中有这样的文字,重点煤矿:
可以通过将其放置在大括号中包括在所述消息中的变量或其他表达式的值...
什么表情被允许?
微软的文档上的是什么,是不允许的具体细节,而稀疏。 大部分低于被立即窗口反复试验才发现。 请注意,这个列表是C ++,因为这是我的代码。我相信,在C#中,下面的一些违禁物品实际上是允许的。
最基本的表达式可以被评估,包括铸造,设置变量,并调用函数。
一般限制{ *(bool*)(0x1234) = true }
{ @eip = 0x1234 }
从调用函数跟踪点可以是相当强大的。 你可以避开最上面有精心设置的功能和正确的判罚中所列的限制。 这里有一些更具体的想法。
如果强制执行很简单:建立一个跟踪点设置一个变量并强制如果条件为真或假,这取决于你需要测试的内容。 所有无需添加代码或离开调试会话。
断点“拨动”我已经看到这个问题了几次,“我需要在被打了很多斑点,打破,我想简单地能够从另一个断点该断点,所以我关心的一个只对某个代码获取中断路径。我该怎么办呢?” 通过上面我们所知,这很容易,但你需要一个辅助变量。
这种做法的好处是,你可以四处移动跟踪点不留调试会话。 使用即时窗口或监视窗口重置全局标志,如果你需要做另一奔跑吧。 当你完成,你需要清理的是,全球布尔值。 没有其他的代码去除。
自动跳过代码EIP寄存器(至少在x86)是指令指针。 如果分配给它,你可以改变你的程序流程。
{@eip = address}
,使用地址从第1步。 虽然这是很方便的,要小心,因为跳过这样的代码可能会导致怪异的行为。
库尔特Hutchinson说,字符串赋值不是在跟踪点允许。 您可以通过创建一个将字符串变量的方法解决这个问题,并调用。
public static class Helper
{
public static void AssignTo(this string value, out string variable)
{
variable = value;
}
}
然后在您的跟踪点信息:
{"new string value".AssignTo(out stringVariable)}