V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
EKkoGG
V2EX  ›  问与答

虚心请教一下 VS 中附加到进程进行调试的原理!

  •  
  •   EKkoGG · 2019-02-15 14:35:03 +08:00 · 2333 次点击
    这是一个创建于 2099 天前的主题,其中的信息可能已经有所发展或是发生改变。

    语言:C#

    主程序:一个 WinForm,通过调用 DLL 插件工作

    插件:自己编写的一个 DLL

    调试过程:

    1. 先将主程序配置为 DEBUG 模式,主程序打开后 UI 处于等待状态
    2. 这时在自己编写的 DLL 中打断点然后附加进程到主程序进行调试
    3. 程序顺利进入自己编写的 DLL 中的断点

    刚入行的小白,明白动态加载 DLL 是通过反射的机制,但是为什么附加进程到主程序进行调试就可以顺利进入 DLL 的断点呢?因为没有主程序的代码,所以不是很明白其中的工作原理,在搜索引擎也没找到比较清晰的解释,所以希望各位大大指教一下 XD

    6 条回复    2019-02-15 17:09:27 +08:00
    EKkoGG
        1
    EKkoGG  
    OP
       2019-02-15 14:39:36 +08:00
    希望大哥们帮助一下哈哈哈哈
    xomix
        2
    xomix  
       2019-02-15 14:52:27 +08:00
    有.pdb 作为解释文件,然后通过进程间通讯来附加断点,剩下的就是通过本机反射和进程通讯获取数据了。我了解的也就这么多,没有更深入的信息了。
    EKkoGG
        3
    EKkoGG  
    OP
       2019-02-15 14:56:37 +08:00
    @xomix
    哈哈哈 很感谢了~
    EKkoGG
        4
    EKkoGG  
    OP
       2019-02-15 15:07:44 +08:00
    .net 相关
    xomix
        5
    xomix  
       2019-02-15 16:42:25 +08:00   ❤️ 1
    哦对如果编译成 il 走中间件的话
    https://www.cnblogs.com/zery/p/3366175.html
    那制还要更简单一些。
    EKkoGG
        6
    EKkoGG  
    OP
       2019-02-15 17:09:27 +08:00
    @xomix
    哈哈 感谢感谢
    另外关于附加到进程
    https://stackoverflow.com/questions/42563900/how-does-the-visual-studio-attach-to-process-work
    https://www.zhihu.com/question/30302856

    这两个网页的内容应该对你 2L 的回复有补充作用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5098 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:43 · PVG 13:43 · LAX 21:43 · JFK 00:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.