6

我使用 QtCreator IDE 编写了一个使用 mingw 编译的非 Qt C DLL。

当我将 DLL 注入进程时,DLL 会导致该进程在某行代码处崩溃。通过使用,我发现这条线是罪魁祸首OutputDebugString。我知道如何修复该行,并且当该行被修改时 DLL 可以工作。但是,出于学习如何使用调试器的目的,我保留了断线和未修改的行。

我将如何使用 QtCreator 调试器来找到导致问题的同一行?当 QtCreator 设置为在调试模式下编译时,按 F5 会导致以下对话框,因为没有 EXE:

在此处输入图像描述

4

1 回答 1

3

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

于 2013-10-27T17:35:05.607 回答