디버깅 과정에서 SIGSTOP 시그널이 발생할 때
다음과 같은 코드가 있다고 가정한다.
#include <QCoreApplication>
#include <QDebug>
#include <QThread>
struct MyThread : QThread {
void run() override {
while (true) {
qDebug() << "hahaha";
QThread::sleep(1);
}
}
};
int main(int argc, char* argv[]) {
QCoreApplication a(argc, argv);
MyThread myThread;
myThread.start();
return a.exec();
}
QtCreator에서 디버깅을 할 때 다음과 같은 “SIGSTOP”이라는 Linux Signal이 발생하여 IDE에서 멈출 때가 있다.
해결 방안 1
Projects - Run 에서 “Run in terminal” 옵션을 해제한다(workaround).
해결 방안 2
Linux Signal을 IDE에서 무시하도록 디버그 옵션을 넣는다. Tools - Options - Debugger - Locals & Expressions - Debugging Helper Customization에서 다음과 같은 옵션을 추가한다.
handle SIGSTOP pass nostop noprint