首页 > 解决方案 > 由于“未知信号”,使用 dgb 在 QT 创建器中调试时出错

问题描述

我正在尝试调试此代码:

#include <stdio.h>
int main()
{
    int firstNumber, secondNumber, sumOfTwoNumbers;

    printf("Enter two integers: ");

    // Two integers entered by user is stored using scanf() function
    scanf("%d %d", &firstNumber, &secondNumber);

    // sum of two numbers in stored in variable sumOfTwoNumbers
    sumOfTwoNumbers = firstNumber + secondNumber;

    // Displays sum      
    printf("%d + %d = %d", firstNumber, secondNumber, sumOfTwoNumbers);

    return 0;
}

以下是调试器日志(如此所述):

1show version
2show debug-file-directory
3set print object on
4set breakpoint pending on
5set print elements 10000
6set unwindonsignal on
7set width 0
8set height 0
9set substitute-path C:/work/build/qt5_workdir/w/s C:/msys64/mingw32/qt5-static
10set substitute-path Q:/qt5_workdir/w/s C:/msys64/mingw32/qt5-static
11set substitute-path c:/Users/qt/work/install C:/msys64/mingw32/qt5-static
12set substitute-path c:/users/qt/work/qt C:/msys64/mingw32/qt5-static
13python sys.path.insert(1, 'C:/msys64/mingw64/share/qtcreator/debugger/')
14python sys.path.append('C:/msys64/mingw64/bin/data-directory/python')
15python from gdbbridge import *
16python theDumper.loadDumpers({"token":16})
17-interpreter-exec console "set target-async off"
18-break-insert  -f "\"main.c\":12"
19attach 7444
20-exec-continue
21importPlainDumpers off
22-thread-info
23python theDumper.fetchStack({"limit":20,"nativemixed":0,"token":23})
24set disassembly-flavor att
25-interpreter-exec console "disassemble /rm 0x8ddf8"
26-stack-select-frame 0
27python theDumper.fetchVariables({"autoderef":1,"context":"","displaystringlimit":"100","dyntype":1,"expanded":["watch","return","inspect","local"],"fancy":1,"formats":{},"nativemixed":0,"partialvar":"","passexceptions":0,"qobjectnames":1,"resultvarname":"","stringcutoff":"10000","token":27,"typeformats":{},"watchers":[]})
28-interpreter-exec console "disassemble /rm 0x8dde4,0x8de5c"
<Rebuild Watchmodel 1 @ 12:59:48.782 >

(超过了最大字符限制,这就是我在 pastebin 发帖的原因)

https://pastebin.com/rLDsWd9N

当我尝试调试代码并且有断点时,我得到一个窗口:

The inferior stopped because it received a signal from the operating system.
Signal name: ?
Signal meaning: Unknown signal

截屏:

在此处输入图像描述

另外,我得到问题:

:-1: error: An exception was triggered: 
Exception at 0x4015f6, code: 0x4000001f: Win32 x86 emulation subsystem breakpoint hit, flags=0x0.

截屏: 在此处输入图像描述

还有一些截图:

在此处输入图像描述

构建和运行代码没有给我任何错误。我已阅读内容,但我没有除 Windows Defender 之外的防病毒软件,并且我禁用了它的实时保护。我使用 Windows 8.1

我还使用来自 msys2 的 QT、mingw 和 gdb。

问题:问题是什么以及如何解决?

标签: cqtgdbmingw-w64mingw32

解决方案


我使用的是 qtcreator 64 位,但项目选择了套件 mingw-w64 32 位。我认为位数的差异导致了错误。

现在,当我将 qtcreator 64 位与套件 mingw-w64 64 位一起使用时,调试器工作正常

我得到了Reddit 用户 jedwardsol的帮助:

4000001f 来自 64 位 Windows 的 x86 仿真层。也许您的调试器不理解它。

尝试构建一个 64 位程序。


推荐阅读