gdb常用命令的使用
-
gcc -v–> 查看当前gcc的版本
-
gdb -help–> 可以查看gdb有哪些使用命令。
-
gcc -c max.c -o max.o–> 生成max.o文件,max.o是可读可写但不可执行的文件(只有拥有main函数的文件才能被执行),相当于编译器对max.c源代码进行翻译,翻译成计算机能识别的01这样的二进制机器码。
-
gcc -g main.c -o main.out -->生成可调试的main.out文件,gcc -g:表示编译的程序可以用于调试, gcc后面如果不加-g表示编译的程序不能用于调试; 如果没有加-o main.out,默认生产的是a.out文件
-
./main.out–>进行文件的执行输出。
以下为调试的一些常用命令
-
gcc ./main.out -->进入调试模式中(main.out为main.c编译的文件)
-
l(或者list) --> 列出当前当前软件项目的源代码,即main.c中的源代码
-
回车–>表示继续执行上一个命令,比如执行l命令。
-
start -->开始单步调试,从main函数开始。
-
p 变量名–>打印变量的值,比如p a:打印a的值。
-
n -->跳到下一行。只是跳到下一行,但是下一行的代码却还没有执行。
-
s(step)–>执行一行源代码并且进入函数内部。
-
f(frame)–>切换调用的上下文,进入相应的栈里,使用该命令可以打印栈层编号,当前的函数名,函数参数值,函数所在的文件及行号,函数执行到的语句等等,例如f 1:切换到栈1中。
-
bt -->查看函数堆栈。
-
break num–>在num行打一个断点。
-
q -->退出调试。
64位系统的内存管理情况:
(使用的内存只要有前48位就可以了)
用户内存隔离开的好处:
- 操作系统的内存不会被大量占用
- 避免机器卡住/卡死/死机等状态
- 可通过操作系统把应用程序关闭
- 使得操作系统更安全
代码编译后的二进制数据加载到内存中放到代码段。
声明一些全局变量或者声明一些常量放到数据段;例如const int i。