c语言程序如何加断点,c – 如何在Visual Studio中的DLL上设置断点?

P,这是你的要求.但说实话,这可能是非常有用的东西,即使对于其他场景也是如此.

我认为你可以实现这一目标的最简单方法是使用WinDbg并在那里设置断点.使用WinDbg,您可以执行以下操作(假设您的图像名为myplugin.dll):

>打开WinDbg

>文件 – >符号文件路径(添加插件的.pdb所在的路径)

>文件 – >源文件路径(添加插件源的路径)

>文件 – >图像文件路径(添加插件DLL本身所在的路径)

>文件 – >打开可执行文件(或附加到现有进程,选择主应用程序)

>在命令行:bm myplugin!*

>运行程序(F5)

步骤6将在myplugin.dll中的每个符号处添加断点.但请注意:这将在每个函数中添加一个断点,即使在您可能没有自己定义但通过头文件(如STL)包含的函数中也是如此.这是在模块中到处设置断点的最激进方式.如果插件的编程方式是所有导出的函数都位于命名空间中,或者使用前缀,则可以减少搜索模式并获得更准确的断点.让我们假设你感兴趣的所有这些函数都以PLG_为前缀,然后你会写:

bm myplugin!PLG_*

让每个断点都相应地设置 – 非常直截了当.

当然缺点是您必须使用外部调试器. Visual Studio中做的工作相似,但据我所知,他们要么不很好使用通配符在每一个情况下工作的支持功能断点,或者他们在VS2013已经改变了它,无论是其中之一.

这是我所知道的最简单的方法(不是没有,但我根本不知道).第二个最简单的方法:手动添加断点,如果稍后再次需要断点,则保存.suo文件.这是一项繁琐的任务,但寻求更快的解决方案可能需要比手工操作更长的时间(在工作日计算).

另一些人,你写一个程序,在您的导出函数一开始就增加了一个蹦床(读PE头,并得到职能的RVA)与INT 3和原来的指令,但是这是矫枉过正 – 你轻松拥有在完成此操作之前,手动将断点放入1000个函数中.

另一种方法是更改​​存储断点的.suo解决方案选项文件.但是,据我所知,这些只能通过Visual Studio的可扩展性API获得,这意味着您必须为Visual Studio本身编写插件或宏.

我也对此非常感兴趣.所以我会在一段时间内观察这个问题,也许有人知道更简单的解决方案.如果您是WinDbg新手,只需添加评论,我将尝试解释您是如何获得它以及它是如何工作的:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值