gdb调试必须是gdb a.out吗?如果一个程序有错误,不能生成a.out,我想用gdb调试查找错误,怎么弄?

gdb调试必须是gdb a.out吗?如果一个程序有错误,不能生成a.out,我想用gdb调试查找错误,怎么弄?,第1张

unix系统中没有后缀名的概念。可执行文件a和aout都是一样的。
gdb 调试:
1gdb aout 进入gdb控制台
2set args [arg_list](设置参数,也就是main(int argc,char argv)中的argv字符串,没有这不需要设置)
3设置断点
1):b 文件名:行数,如:b testc:20
2):b 函数名,如:b main
3):查看断点信息 info b
4启动程序 r 或 run
5单步调试 s / step (遇函数进入)
6多步调试 n [运行行数] (遇函数不进入) 默认一步
7显示变量值 p [变量名]
8查看堆栈 bt [栈顶行数] 默认 5行
9退出GDB控制台 quit
。。。。。
最简单的调试就这几步
GDB调试网上资料很多,你可以去搜索下。
另外要如果要学习UNIX/LINUX编程,推荐一本很实用的入门书籍《unix/linux编程实践教程》清华大学出版 Bruce Molay著,杨宗源、黄海涛翻译。非常经典。只要有c的基础就可以学习。而且可以初步认识unix/linux系统,编出实用的小程序哦。

你好,楼主:
刚开始学习嵌入式会接触这些工具的,多练习下,尤其是vi与make,功能介绍如下:
1、GCC,是编译器,可以将c、c++源文件编译为可执行文件,生成可执行文件就像windows下面的exe;
2、GDB,是调试工具,可以逐步调试你编译好的可执行文件,如果不想使用printf打印,就用这个最合适了,不过在使用上,要注意用gcc编译加上-g这个参数;
3、Make,是项目管理工具,通常通过编写Makefile来管理编译大型项目,推荐学习Makefile如何编写;
4、Vi,是编辑工具,应该说是超级经典了,我一直在使用Vi,还有与之抗衡编辑工具就是Emacs,根据个人喜好选择吧。
最后祝你学习快乐,加油!

禁止在 Linux 中 gdb 调试的方法有许多,以下是其中的一种方法:
1 禁用 core dump:可以通过以下命令将 core dump 禁用:
```
ulimit -c 0
```
这将确保应用程序在崩溃时不会生成任何 core dump 文件。gdb 通常需要访问 core dump 文件来执行调试 *** 作,因此禁用它们可以帮助防止调试。
2 使用 ptrace:ptrace 系统调用可以被用来执行程序间的跟踪和调试,因此禁用它可以防止 gdb 调试。为了禁用 ptrace,可以在 /etc/sysctlconf 文件中添加以下内容:
```
kernelyamaptrace_scope = 1
```
然后更新 sysctlconf 文件,使设置生效:
```
sudo sysctl -p
```
这将限制 ptrace 仅在其父进程和子进程之间(或在具有适当权限的特权用户之间)进行。这样可以防止普通用户使用 gdb 调试其他用户、系统进程或其他特权进程。
请注意,以上方法仅仅是防止 gdb 调试的其中一种方法,还有其他方法可以绕过这些限制。因此,禁止 gdb 调试并不能完全保证系统的安全性和机密性。如果您对系统安全性有更高的要求,建议请咨询专业安全人员提供更加严格的安全策略。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/12764065.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存