ptrace 卡在 waitpid

问题描述

我正在使用本教程 https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/ 编写调试器,它使用 ptrace 并处理信号陷阱。 我正在使用 printf() 函数测试这个库,但它不起作用。它卡在 waitpid 上,最后一个 strsignal(siginfo.si_signo) 表示非法指令。 我想知道是否有人可以解释 GDB 如何与 printf() 等 I/O 函数一起工作

我的代码卡住的代码如下:

void debugger::wait_for_signal()

{

    int wait_status;

    auto options = 0;

    waitpid(m_pid,&wait_status,options);



    auto siginfo = get_signal_info();



    switch (siginfo.si_signo) {

    case SIGTRAP:

        handle_sigtrap(siginfo);

        break;

    case SIGSEGV:

        std::cout << "Yay,segfault. Reason: " << siginfo.si_code << std::endl;

        break;

    default:

        std::cout << "Got signal " << strsignal(siginfo.si_signo) << std::endl;

    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)