c - 如何检测GDB当前进程是否正在运行?

c - 如何检测GDB当前进程是否正在运行?

标准方式如下: if(ptrace(PTRACE_TRACEME, 0, NULL, 0)==-1) printf("traced!\n"); 在这种情况下,如果跟踪当前进程(即使用gdb运行或附加到它),ptrace将返回错误。 但是这有一个严重的问题:如果调用成功返回,gdb可能以后不会附加到它。 这是一个问题,因为我没有尝试实现反调试的东西。 我的目的是在满足转义时发出'in…


debugging - 了解电围栏和gdb的输出

当调试一个以segfault结束的程序时,电子围栏与gdb一起返回: "ElectricFence Exiting: mprotect() failed: Cannot allocate memory[Thread 0xb0bd4b70(LWP 5363) exited] Program exited with code 0377. 我其实觉得电围栏会更有帮助。 这是什么意思? 我怎样才…


GDB:Ctrl+C不像通常那样中断进程,而是终止程序

通常,当你通过GDB运行一个程序时,你可以按下Ctrl+C来中断它,例如,如果它陷入了一个无限循环,你想得到一个回溯。 我正在调试一个程序(xmms2d,因为它发生了),但只在这个程序中,当我按下Ctrl+C时,它被视为GDB没有运行-程序关闭干净,然后GDB告诉我程序正常退出。 如何获得通常的GDB行为,Ctrl+C中断程序? 或者还有另外一种方法可以像Ctrl+C一样…



linux - 在GDB中写入十六进制

我在一个软件安全类,我们正在学习缓冲区溢出和如何被利用。 我有一个程序,我知道如何利用,但我似乎无法这样做,因为我必须写十六进制,它不允许我写。 我需要写出从以下产生的数据: perl-e 'print "A"x48; print "\x1b\x88\x04\x08";' 但是,我不能将该输出重定向到命令行参数中,因为该程序是交互式运行的。 从历史上看,我已经使用xclip将其复制到剪贴…


multithreading - 如何获取GDB中所有线程的回溯?

在GDB中是否有与Windbg的“!process 0 7”相同的命令? 我想提取转储文件中的所有线程及其在GDB中的回溯。 “info threads”不输出堆栈跟踪。 那么,有没有什么命令呢?…




attach线程 thread pid list gdb调试 attach gdb测试 gdb断点调试 gdb教程 gdb多线程