WSL + Visual Studio - 无法正确调试信号

问题描述 投票:0回答:1

我正在 Visual Studio 下调试此代码(不是 Visual Studio 代码):

#include <cstdio>
#include <signal.h>
#include <unistd.h>

int n = 0;

void handleSignal(int sig) {
//it works from terminal but not from IDE
    printf("Signal received: %d - %d times\n", sig ,++n);
}


int main()
{
    printf("Hi From WSL! - PID: %d\n", getpid());
    auto s = signal(SIGUSR1, handleSignal);

    printf("signal was %d\n", s); // prints 0

    while (n<10) {
        printf("sleeping - %d\n", n);
        sleep(1);    
    }
    printf("Received signals %d timeskill , exiting\n", n);
    return 0;
}

我跑步

kill -10 <pid of process>

如果我从 bash 运行代码一切都很好

# output if run from bash:
$ ./LinuxConsoleApplicationWsl.out
Hi From WSL! - PID: 4953
signal was 0
sleeping - 0
sleeping - 0
sleeping - 0
sleeping - 0
sleeping - 0
sleeping - 0
sleeping - 0
sleeping - 0
sleeping - 0
Signal received: 10 - 1 times
sleeping - 1
sleeping - 1
Signal received: 10 - 2 times
sleeping - 2
Signal received: 10 - 3 times
sleeping - 3
Signal received: 10 - 4 times
sleeping - 4
Signal received: 10 - 5 times
sleeping - 5
Signal received: 10 - 6 times
sleeping - 6
Signal received: 10 - 7 times
sleeping - 7
sleeping - 7
sleeping - 7
Signal received: 10 - 8 times
sleeping - 8
Signal received: 10 - 9 times
sleeping - 9
Signal received: 10 - 10 times
Received signals 10 timeskill , exiting

(执行 printfs 并在第 10 个信号发送应用程序退出)但是如果我从 Visual Studio 运行它,我会得到这个未处理的异常:

我错过了什么?

c++ visual-studio signals windows-subsystem-for-linux
1个回答
0
投票

我自己的回答: 将 VS 更新到版本 17.6.5 解决了该问题,现在信号是可调试的。

作为注释,我报告“异常”仍然如此通知,但使用 de 调试器进行单步调试是有效的。

© www.soinside.com 2019 - 2024. All rights reserved.