加载.NET 2或.NET 4时如何设置断点?

托马斯·韦勒

有时我正在调试.NET应用程序,但不知道它们将使用.NET 2还是.NET4。我想在加载.NET时介入,所以我这样做

sxe -c ".echo .NET4 loaded" ld clr
sxe -c ".echo .NET2 loaded" ld mscorwks

不幸的是,只能有一个这样的断点,并且在上面的示例中,它会mscorwks被覆盖,clr并且在.NET4的情况下,它不会达到该断点。

有没有办法打破多个不同的负载事件?

我真的不想摆弄我无法理解的尝试

sxe -c".foreach /ps 5 /pS 99 (token {.lastevent}) {.if ($spat(\"[0-9a-z.:\\]*\\clr.dll\",\"${token}\")) {.echo clr;} .elsif ($spat(\".*\mscorwks.dll\",\"${token}\")) {.echo mscorwks} .else {}}" ld
托马斯·韦勒

使用pykd,我提出了以下解决方案:

首先,编写一个包含以下内容的Python脚本(在我的示例中为loadModule.py):

from pykd import *
import sys

event = lastEvent()
if event != eventType.LoadModule:
    sys.exit()

# get module load event details in string format
details = dbgCommand(".lastevent")

# remove the debugger time
details = details.split("\n")[0]

# get everything behind "Load module"
details = details.split("Load module ")[1]

# remove address
details = details.split(" at ")[0]

# remove full path
details = details.split("\\")[-1]

# remove extension
details = ".".join(details.split(".")[0:-1])

# compare case-insensitive
details = details.upper()

if details in [x.upper() for x in sys.argv[1:]]:
    breakin()

然后在加载事件上设置一个断点,如下所示:

sxe -c "!py loadModule.py clr mscorwks coreclr;g" ld

这将在每个模块加载事件上执行Python脚本。如果找到该模块,则该脚本会进入调试器(Python脚本中的breakin()),否则它将继续(在WinDbg中为g)。

您可以使用任意数量的模块。比较不区分大小写。

请注意,这可能不是最优雅的解决方案。似乎还有另一种方式:继承eventHandler :: onModuleLoad。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

表单加载时检查设置单选按钮(vb net)?

来自分类Dev

VB.NET-加载时隐藏表格

来自分类Dev

无法加载Log4Net配置

来自分类Dev

ASP.NET-在页面加载时加载LIstBox控件

来自分类Dev

如何加快.NET程序集的加载性能

来自分类Dev

ASP.NET Core RC2迁移-加载视图时出错

来自分类Dev

使用 Angular 2 配置 nginx 时出错:无法加载资源:net::ERR_CONTENT_LENGTH_MISMATCH

来自分类Dev

如何在ASP.NET Core 1.0 RC2中加载程序集

来自分类Dev

使用XmlConfigurator加载后,如何以编程方式设置log4net LockingModel?

来自分类Dev

.net core 3.1 WorkerService无法加载配置选项/设置

来自分类Dev

加载Ninject组件ICache时ASP.NET MVC错误

来自分类Dev

VB.Net + WebService:主窗体在加载时无响应

来自分类Dev

会话过期时的.Net MVC部分视图加载登录页面

来自分类Dev

加载大数据时解冻程序-vb.net

来自分类Dev

在循环VB.Net中加载SQL参数时出错

来自分类Dev

登录时的Ajax加载程序(ASP.NET MVC)

来自分类Dev

未在加载时选择ASP.NET MVC RadioButtonFor

来自分类Dev

在 asp.net 中的页面加载时显示 Bootstrap 警报

来自分类Dev

如何在ASP.NET Core RC2应用程序中手动重新加载IOptions

来自分类Dev

ASP.Net MVC 4动态加载CSS文件

来自分类Dev

.Net CAD:cui文件加载

来自分类Dev

如何命令页面在ASP.NET中重新加载?

来自分类Dev

Asp.net MVC5,如何加载.hbs文件

来自分类Dev

如何加快来自Angular / Mvc.net的图像加载

来自分类Dev

Linux上的PowerShell-如何加载\使用.Net程序集?

来自分类Dev

如何使用.net或脚本预加载CosmosDB数据库

来自分类Dev

Asp.net MVC5,如何加载.hbs文件

来自分类Dev

如何获取当前在WebBrowser控件.NET中加载的图像

来自分类Dev

如何加载ASP.NET大HTML表异步

Related 相关文章

  1. 1

    表单加载时检查设置单选按钮(vb net)?

  2. 2

    VB.NET-加载时隐藏表格

  3. 3

    无法加载Log4Net配置

  4. 4

    ASP.NET-在页面加载时加载LIstBox控件

  5. 5

    如何加快.NET程序集的加载性能

  6. 6

    ASP.NET Core RC2迁移-加载视图时出错

  7. 7

    使用 Angular 2 配置 nginx 时出错:无法加载资源:net::ERR_CONTENT_LENGTH_MISMATCH

  8. 8

    如何在ASP.NET Core 1.0 RC2中加载程序集

  9. 9

    使用XmlConfigurator加载后,如何以编程方式设置log4net LockingModel?

  10. 10

    .net core 3.1 WorkerService无法加载配置选项/设置

  11. 11

    加载Ninject组件ICache时ASP.NET MVC错误

  12. 12

    VB.Net + WebService:主窗体在加载时无响应

  13. 13

    会话过期时的.Net MVC部分视图加载登录页面

  14. 14

    加载大数据时解冻程序-vb.net

  15. 15

    在循环VB.Net中加载SQL参数时出错

  16. 16

    登录时的Ajax加载程序(ASP.NET MVC)

  17. 17

    未在加载时选择ASP.NET MVC RadioButtonFor

  18. 18

    在 asp.net 中的页面加载时显示 Bootstrap 警报

  19. 19

    如何在ASP.NET Core RC2应用程序中手动重新加载IOptions

  20. 20

    ASP.Net MVC 4动态加载CSS文件

  21. 21

    .Net CAD:cui文件加载

  22. 22

    如何命令页面在ASP.NET中重新加载?

  23. 23

    Asp.net MVC5,如何加载.hbs文件

  24. 24

    如何加快来自Angular / Mvc.net的图像加载

  25. 25

    Linux上的PowerShell-如何加载\使用.Net程序集?

  26. 26

    如何使用.net或脚本预加载CosmosDB数据库

  27. 27

    Asp.net MVC5,如何加载.hbs文件

  28. 28

    如何获取当前在WebBrowser控件.NET中加载的图像

  29. 29

    如何加载ASP.NET大HTML表异步

热门标签

归档