Почему SIGTRAP и SIGILL выбрасываются при добавлении и удалении точек останова в CodeBlocks с помощью GDB?

Я использую CodeBlocks 17.12 в комплекте с MingGW: GDB 7.11.1, mingw32-gcc 5.1.0 и mingw32-g++ 5.1.0.

При установке точки останова во время работы программы я получаю сигнал SIGTRAP. Я могу продолжить работу после точки останова и ударить ее несколько раз. Когда я удаляю точку останова, программа все равно останавливается на той же строке с SIGTRAP. При следующем продолжении он останавливается с SIGILL, и я больше не могу продолжать.

Точка останова устанавливается в строке 9, строке cout:

#include <iostream>

using namespace std;

int main()
{
    for(int i = 0; i < 65000; i++)
    {
        cout << "Hello world!" << endl;
    }
    return 0;
}

Вывод отладчика в CodeBlocks:

Trying to interrupt process with pid: 19600; child pid: 19600 gdb pid: 20264
Continuing...
Program received signal SIGTRAP, Trace/breakpoint trap.
At C:\Users\twalczak\Desktop\test\main.cpp:9
Continuing...
At C:\Users\twalczak\Desktop\test\main.cpp:9
Continuing...
At C:\Users\twalczak\Desktop\test\main.cpp:9
Continuing...
At C:\Users\twalczak\Desktop\test\main.cpp:9
Continuing...
At C:\Users\twalczak\Desktop\test\main.cpp:9
Continuing...
At C:\Users\twalczak\Desktop\test\main.cpp:9
PC register is not available                   <-- 'Breakpoint removed at this point'
Continuing...
Program received signal SIGTRAP, Trace/breakpoint trap.
At C:\Users\twalczak\Desktop\test\main.cpp:9
Continuing...
Program received signal SIGILL, Illegal instruction.
At C:\Users\twalczak\Desktop\test\main.cpp:9

EDIT Удалено в комплекте, потому что я использовал пользовательскую установку MinGW, а не пакетную установку.


person Tomasz Walczak    schedule 20.07.2018    source источник


Ответы (1)


Я преодолел эту проблему, указав CodeBlocks использовать установку MinGW, с которой он был связан в

C:\Program Files (x86)\CodeBlocks\MinGW 

вместо моей установки в

C:\MinGW
person Tomasz Walczak    schedule 20.07.2018