问题描述
我正在使用本教程 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 (将#修改为@)