我想在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
我想在哪里只获得地址编号。
有什么建议吗?
答案 0 :(得分:0)
您可以.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地址放置断点以及为什么sosex托管断点不适合你。您是否尝试过!mbm
和!mbp
?