1.创建动态库解析
-fpic:使输出的对象模块可重定位地址方式生成的。
-shated:指定把对应文件生成对应的动态链接库文件
gcc -shated -fpic -o libtest.so main.c test.c
拆分一下 lib +test+.so 只有test可以被更改,其他都是固定的
2.创建main.c调用库文件测试
gcc main.c ./libmain.so -o main --生成可执行文件
注意:清楚库文件在哪里
3.内存的分配
4.main函数接收参数
1.int main(int atgc,char *argv[ ])是UNIX和linux中的
标准写法,但是int main()只是UNIX和linux默许的用法
2.C语言中main函数的参数只能有2个,习惯上2个参数写为argc和
argv。其中argc必须是整型变量,*argv必须是指向字符串的指针数组写法
5.GDB调试工具具有以下功能
1>监视程序中变量的值
2>设置断点以使程序在指定的代码行上停止执行
3>一行一行的执行代码
6.GDB常用命令
7.GDB调试编译代码
在==编译时用 -g 选项 ==打开调试选项
8.常用命令的使用
1》装入调试文件 例:gdb main <main是main.c生成的可执行文件> 2》查看源代码list或l
例 : l,list
查询行号 l 行号 l 15
查询多行 l 第几行,第几行 l 2,16
3》运行命令
1>运行命令run或r <运行程序>
2>下一步next或n <运行下一行,会跳过函数>
3>单步执行step或s
4>继续运行continue或c <从断点开始,继续执行遇到断点或结束停止> 5>首行开始start <输入start跳转到首行>
9.断点操作
1》设置断点break或b
设置断点要结合list查看代码行号,设置成功后,使用run命令运行程序
避免断点设置在空行或者注释行上
1>根据行号设置断点
break 行号
2>根据函数设置断点
break 函数
3>根据表达式断点
break 行号 if i==3<行号后面是表达式>
2》显示当前gdb断电信息info break
程序运行结束后,可以查看所有断电信息
3》禁止或启用断点enable或disable
disable break
4》删除断点delete break或 d
delete/d break 行号
5》清除断点clear,同样也是删除断点
clear 行号
6》观察点watch
watch a = 10 -设置变量
10.查看数据
1》查看变量值print或p
print/p 变量名
11.自动显示变量display
当程序运行停住时,自动显示变量值
12.结束当前函数运行finish
13.结束当前for循环jump
最好在同一个函数,不能超过本函数,否则可能会出错
jump 行号
14.查看变量类型ptype
ptype 变量名
15.列出当前程序存活的栈帧bt
栈帧:随着函数调用而在stack上开辟一片内存空间。用于存放函数调用
时产生的局部变量和临时值。
16.根据栈帧编号,切换栈帧frame
17.打印寄存器
17.退出gdb用quit或q