2013-10-27 89 views
5

我用QtCreator IDE编写了一个使用mingw编译的非Qt C DLL。如何使用QtCreator调试DLL项目?

当我将DLL注入进程时,DLL会导致该进程在某行代码处崩溃。我发现这条线是通过使用OutputDebugString的罪魁祸首。我知道如何修复该行,并在修改该行时运行该DLL。但是,为了学习如何使用调试器,我已经将该线断开并且未修改。

如何使用QtCreator调试器来查找相同的确切线路导致问题?当QtCreator被设定在调试模式下进行编译,按F5的结果在下面的对话框,因为没有EXE:

enter image description here

+1

编写一个链接库的小程序,该库重现问题并在调试器中运行该程序。或者你说的“注入”意味着什么? –

+0

@FrankOsterfeld:http://en.wikipedia.org/wiki/DLL_injection它是一个低级DLL文件,用于编辑受害过程的内存。由于DLL注入的工作原理,我无法链接到库。为什么我要编辑另一个进程的内存?我正在编辑一个名为Assault Cube的开源项目的内存。目的是探索和学习更多关于C代码如何转换为ASM以及计算机如何在较低级别工作的信息。 – user2924308

+1

那么,你可以输入可执行文件名称,在上面的窗口中使用你的dll和参数,QtCreator将为你完成剩下的工作。 – Lol4t0

回答

3

的解决方案是在注入DLL之前运行附到可执行调试器。该DLL必须在调试配置中构建,并且其项目需要打开。使用指令here连接调试器并注入DLL。如果可执行文件崩溃,当您单击所选堆栈帧时,应该看到堆栈跟踪和您的DLL代码。但要小心:如果损坏进程的内存,堆栈跟踪可能不完整或不正确。

+0

太棒了!我几乎可以肯定,这是不可能的。 – user2924308

+0

@ user2924308如果您发现我的回答有帮助,请接受它。 – Nazar554