编写了个b.dll,用a.exe来做主机应用程序,通过a.exe 把 b.dll 注入到了 c.exe,可是,没法调试b.dll,在源码里下断无法断下,请教各位朋友,要怎么设置才能调试呢,实在郁闷。

解决方案 »

  1.   

    到网上查,估计是你没操作号dll的调试
      

  2.   

    这样肯定调试不了,你这样下的断点,对于当前的EXE有用而已。你要调试被注入的EXE,除非你用第三方的调试工具加载,再下断点,不过这样看到的只是反汇编出来的代码哦建议你还是在当前的EXE里面模拟测试好点。
      

  3.   

    谢谢各位朋友,我想也是因为注入后就不在同一个进程,因为有些代码在没有注入时是可以下段的,但这不是我想要的,听说vc是可以调试注入后的dll的,不知哪位高手能解决delphi的注入问题,我想这个问题如果搞注入的都会碰到的,我卡在这个问题上好些天了,如果没有解决,以后调试会搞死人,od那一堆汇编代码看的头大,唉
      

  4.   

    开DLL所在工程,设置好host exe, 断点,调试,OK
      

  5.   

    dll可以调试的啊,网上也有文章的啊,还是我理解错你的意思了啊。我用2010调试过,打开dll的dpr文件,run-Parameters-Host application 选上你的应用程序.exe,在dll里下断点运行即可
      

  6.   

    一、DLL调试方法:      (1)、[Project-->Add Existing Project...]将DLL和宿主程序(就是使用本DLL的程序)添加到一个工程组中,可以同时调试DLL和宿主程序。      (2)、 [Run-->Parameters...    ]在Host Application中填入宿主程序的完整路径然后选择
    [    Project|Options.. ]选择Directories/Conditionals页面在Output directory中填入宿主程序所在目录(这是将编译的DLL程序输出到宿主程序所在目录下),然后就可以按运行(F9)来运行程序,在你需要观看的地方加入断点(F5),如正常使用的操作主程序,调用你的函数/过程的时候就会在你的断点处停下,可单步执行。按Ctrl + F7可以加入变量观察。有一招在DLL的工程文件选项中
    ProjectOptionsLinkerEXE and DLL Options
    把Include TD32 debug Info和Include remote debug symbols勾上试试。如上是复制的, dll是可以源码调试的, run下的attach to proess 也可以的。
      

  7.   

    谢谢各位的回答,关键是我的dll是注入到另一个程序,那个宿主程序只是完成了注入的命令,dll是注入到了另一个程序中,在这种情况下没法调试下段
      

  8.   

    设置注入exe的路径,直接运行, 然后
    run下的attach to proess 选择目标进程。
      

  9.   

    在dll中创建内存映射,将信息存入内存映射中,
    向接收程序发送消息,接收程序读取内存映射,在列表中显示消息,
    类似dbgview,代替messagebox
    我都是这么做的
      

  10.   

    OD吧,调试功能强大。如果以前没接触过OD,又时间不赶的话,花一两天熟悉一下吧。
      

  11.   

    这种调试用 OutputDebugString 输出, debugview查看日志就行了
    messagebox 有时候会卡死