1. 禁用 core dump:可以通过以下命令将 core dump 禁用:
```
ulimit -c 0
```
这将确保应用程序在崩溃时不会生成任何 core dump 文件。gdb 通常需要访问 core dump 文件来执行调试 *** 作,因此禁用它们可以帮助防止调试。
2. 使用 ptrace:ptrace 系统调用可以被用来执行程序间的跟踪和调试,因此禁用它可以防止 gdb 调试。为了禁用 ptrace,可以在 /etc/sysctl.conf 文件中添加以下内容:
```
kernel.yama.ptrace_scope = 1
```
然后更新 sysctl.conf 文件,使设置生效:
```
sudo sysctl -p
```
这将限制 ptrace 仅在其父进程和子进程之间(或在具有适当权限的特权用户之间)进行。这样可以防止普通用户使用 gdb 调试其他用户、系统进程或其他特权进程。
请注意,以上方法仅仅是防止 gdb 调试的其中一种方法,还有其他方法可以绕过这些限制。因此,禁止 gdb 调试并不能完全保证系统的安全性和机密性。如果您对系统安全性有更高的要求,建议请咨询专业安全人员提供更加严格的安全策略。
GDB调试,建议去下个系统的文档;GDB调试器
GCC用于编译程序,而Linux的另一个GNU工具gdb则用于调试程序。gdb是一个用来调试C和C++程序的强力调试器,我们能通过它进行一系列调试工作,包括设置断点、观查变量、单步等。
其最常用的命令如下:
file:装入想要调试的可执行文件。
kill:终止正在调试的程序。
list:列表显示源代码。
next:执行一行源代码但不进入函数内部。
step:执行一行源代码而且进入函数内部。
run:执行当前被调试的程序
quit:终止gdb
watch:监视一个变量的值
break:在代码里设置断点,程序执行到这?锸惫移?
make:不退出gdb而重新产生可执行文件
shell:不离开gdb而执行shell
2)从你的描述上看来,你是用单独的gdb.exe调试器,调试的时候不需要运行程序的,编译的时候 只要加上相应的参数(”-g“)产生编译后的可执行文件,
以gcc编译sum.c(加-g选项产生debug信息):
gcc –g –o sum sum.c
在命令行上键入gdb sum并按回车键就可以开始调试sum了,再运行run命令执行sum。
对于这个信号而言,没有信号响应函数的话,进程应该会异常终止,对于系统已有的信号一般都是有默认处理的,具体的我有点记不得了,搜下其实就知道了.我在网上找了下各信号默认处理方式,你看看吧,对你有没有用信号名称信号说明默认处理
SIGABRT 由程序调用 abort时产生该信号。 程序异常结束。 进程终止并且产生core文件
SIGALRM timer到期, 有alarm或者setitimer 进程终止
SIGBUS总线错误,地址没对齐等。取决于具体硬件。 结束终止并产生core文件
SIGCHLD 进程停止或者终止时,父进程会收到该信号。 忽略该信号
SIGCONT 让停止的进程继续执行继续执行或者忽略
SIGFPE 算术运算异常,除0等。 进程终止并且产生core文件。
SIGHUP 终端关闭时产生这个信号进程终止
SIGILL代码中有非法指令 进程终止并产生core文件
SIGINT终端输入了中断字符ctrl+c 进程终止
SIGIO 异步I/O,跟SIGPOLL一样。 进程终止
SIGIOT 执行I/O时产生硬件错误 进程终止并且产生core文件
SIGKILL 这个信号用户不能去捕捉它。 进程终止
SIGPIPE 往管道写时,读者已经不在了,或者往一个已断开数据流socket写数据。 进程终止
SIGPOLL 异步I/O,跟SIGIO一样。 进程终止
SIGPROF 有setitimer设置的timer到期引发 。 进程终止
SIGPWR Ups电源切换时 进程终止
SIGQUIT Ctrl+\,不同于SIGINT,这个是会产生core dump文件的。 进程终止并且产生core文件
SIGSEGV 内存非法访问,默认打印出segment fault 进程终止并且产生core文件
SIGSTOP 某个进程停止执行,该信号不能被用户捕捉。 进程暂停执行
SIGSYS 调用 *** 作系统不认识的系统调用。 进程终止并且产生core文件
SIGTERM 有kill函数调用产生。 进程终止
SIGTRAP 有调试器使用,gdb 进程终止并且产生core文件
SIGTSTP Ctrl+z,挂起进程。 进程暂停
SIGTTIN 后台程序要从终端读取成数据时。 进程暂停
SIGTTOU 后台终端要把数据写到终端时。 进程暂停
SIGURG 一些紧急的事件,比如从网络收到带外数据。 忽略
SIGUSR1 用户自定义信号 进程终止
SIGUSR2 用户自定义信号 进程终止
SIGVTALRM 有setitimer产生。 进程终止
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)