【linux】创建和使用动态库 GDB调试工具

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值