Kur*_*son 17 trace breakpoints visual-studio
在Visual Studio中创建跟踪点时(右键单击断点并选择"When Hit ..."),对话框中包含此文本,强调我的:
您可以通过将变量或其他表达式放在花括号中来包含变量或其他表达式的值...
允许什么表达?
Kur*_*son 17
微软的文档在关于什么是允许的和不允许的确切细节上相当稀少.以下大多数是通过立即窗口中的反复试验找到的.请注意,此列表适用于C++,因为这是我编写的代码.我相信C#,下面的一些禁止项目实际上是允许的.
可以评估大多数基本表达式,包括转换,设置变量和调用函数.
一般限制{ *(bool*)(0x1234) = true }
{ @eip = 0x1234 }
从跟踪点调用函数可能非常强大.您可以通过精心设置的功能和正确的呼叫来解决上面列出的大多数限制.以下是一些更具体的想法.
强迫if非常简单:设置跟踪点以设置变量并强制if-condition为true或false,具体取决于您需要测试的内容.所有这些都无需添加代码或离开调试会话.
断点"切换"我已经看过几次这个问题了,"我需要打破一个受到很多打击的地方.我想简单地从另一个断点启用断点,所以我关心的断点只会从某个代码中断我怎么能这样做?" 根据我们上面的知识,虽然你确实需要辅助变量,但它很容易.
好处是你可以在不离开调试会话的情况下移动跟踪点.如果需要再次运行全局标志,请使用立即窗口或监视窗口重置全局标志.当你完成后,你需要清理的就是全局布尔值.没有其他代码可以删除.
自动跳过代码EIP寄存器(至少在x86上)是指令指针.如果分配给它,则可以更改程序流程.
{@eip = address}
.虽然这可以很方便,但要小心,因为跳过这样的代码会导致奇怪的行为.
归档时间: |
|
查看次数: |
3707 次 |
最近记录: |