gpt4 book ai didi

c++ - 如何在开始时停止程序以将GDB附加到该程序?

转载 作者:行者123 更新时间:2023-12-02 09:51:55 25 4
gpt4 key购买 nike

我想在C++程序的开头显示PID,并发送一个等待信号,以便可以在另一个终端中运行gdb - PID。然后通过在gdb终端中按run,程序应继续。
如果我用

   pid_t pid = getpid();
cout << "PID = " << pid << endl;
raise(SIGSTOP);
我在输出中看到了
$ ./run
PID = 30261

[1]+ Stopped ./run
$
因此,该程序在后台运行并停止。另一方面,如果我使用 SIGINT,我会看到
$ ./run
PID = 8790
Caught signal: 2
$
我该如何解决?

最佳答案

您不需要使用信号来暂停您的应用程序,您可以等待某个您感兴趣的信号。

int main(){
std::cout << "PID = " << getpid() << std::endl;

int sig;
sigset_t signal_set;

sigemptyset(&signal_set);
sigaddset(&signal_set, SIGCONT);
sigwait( &signal_set, &sig );

std::cout << "continued" << std::endl;
}

关于c++ - 如何在开始时停止程序以将GDB附加到该程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63906436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com