使用脚本在windbg中设置断点

时间:2016-07-05 04:25:44

标签: windbg

我想在windbg中创建一个脚本,在System.Windows.Forms.Application + MarshalingControl..ctor中设置一个断点,当该断点被命中时,它只是将堆栈跟踪转储到我打开的日志文件中

我正在使用sos扩展名!Name2EE命令来获取JITTED代码地址,但我仍无法从返回的内容中获取确切的地址:

.block{.shell -ci "!Name2EE *!System.Windows.Forms.Application+MarshalingControl..ctor" FIND "JITTED Code Address:"}

但这会返回:JITTED Code Address: 63348434 我想在哪里只获得地址编号。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

获取jitted地址

您可以.foreach使用JITTED Code Address:(初始跳过)吃/pS 3,然后.shell: Process exited/ps 3(跳过) :

我试过

0:000> .foreach /pS 3 /ps 3 (var {.shell -ci ".echo JITTED Code Address: 63348434" FIND "JITTED Code Address:"}) {.echo ${var}}
63348434

你应该使用

.block{.foreach /pS 3 /ps 3(var {.shell -ci "!Name2EE *!System.Windows.Forms.Application+MarshalingControl..ctor" FIND "JITTED Code Address:"}) {.echo ${var}}}

然后将.echo ${var}更改为您喜欢的地址。

注意边缘情况:该方法可能尚未进行过操作。

托管断点

我想知道为什么你想在jitted地址放置断点以及为什么托管断点不适合你。您是否尝试过!mbm!mbp