使用脚本在 windbg 中设置断点
setting a breakpoint in windbg using a script
我想在 windbg 中创建一个脚本,在 System.Windows.Forms.Application+MarshalingControl..ctor 中设置一个断点,当遇到该断点时,它只是将堆栈跟踪转储到我打开的日志文件中.
我正在使用 sos 扩展程序的 !Name2EE 命令获取 JITTED 代码地址,但我仍然无法从返回的内容中获取确切地址:
.block{.shell -ci "!Name2EE *!System.Windows.Forms.Application+MarshalingControl..ctor" FIND "JITTED Code Address:"}
但是这个returns:JITTED Code Address: 63348434
我只想获得地址号码本身。
有什么建议吗?
获取 jitted 地址
你可以用 .foreach
包围它,它通过使用 /pS 3
(初始跳过)吃掉单词 JITTED Code Address:
并通过 /ps 3
吃掉 .shell: Process exited
(跳过):
我试过
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
了吗?
我想在 windbg 中创建一个脚本,在 System.Windows.Forms.Application+MarshalingControl..ctor 中设置一个断点,当遇到该断点时,它只是将堆栈跟踪转储到我打开的日志文件中.
我正在使用 sos 扩展程序的 !Name2EE 命令获取 JITTED 代码地址,但我仍然无法从返回的内容中获取确切地址:
.block{.shell -ci "!Name2EE *!System.Windows.Forms.Application+MarshalingControl..ctor" FIND "JITTED Code Address:"}
但是这个returns:JITTED Code Address: 63348434
我只想获得地址号码本身。
有什么建议吗?
获取 jitted 地址
你可以用 .foreach
包围它,它通过使用 /pS 3
(初始跳过)吃掉单词 JITTED Code Address:
并通过 /ps 3
吃掉 .shell: Process exited
(跳过):
我试过
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
了吗?