关于linux代码调试的基础操作

vim
普通模式跳行
gg : 回到文本头部
G(shift + g) : 回到文本最后一行
[num] + G(shift + g) : 跳到任一行
命令行模式下操作
:set nu : 设置行号
:set nonu : 取消行号
:vs [filename] 同时打开多个文件, ctrl + ww 切换到不同的文件
xshell 也有分屏的功能
/[搜索的字符串] —>>按enter, n(next) : 向下去搜索
?[搜索的字符串] —>> : 向上去搜索
:%s/替换谁/要替换成谁/g(区分于是否替换行内所有出现的需要替换的单词), 加上%表示替换全文, 不加表示替换光标所在的当前行

vim
普通用户的 : 用户的家目录下修改或者创建 .vimrc 文件
系统的 : /etc/.vimrc

gcc/g++
a. 预处理阶段
宏替换, 文件展开, 去注释
gcc -E [源代码文件] -o [name].i
b. 编译 :
语法语义的检测, 并且生成汇编代码
gcc -S [name].i -o [name].s
c. 汇编
把汇编代码生成机器可识别指令
gcc -c [name].s -o [name].o
d. 链接
静态链接 = -static 将所有的代码包括标准库的实现全部链接到可执行文件当中去; 缺点 : 冗余性大, 编译出来的文件特别大
动态链接 : 在可执行文件当中只保存所需要使用的函数的符号, 符号表. 优点 : 可执行文件小, 并且各个模块处于解耦状态. 代码的复用性高.

  file : 查看文件属性的
  ldd : 查看可执行文件的动态链接属性的

gdb(调试)
a. 基础(事前)
在编译命令后面加 -g 选项, 生成一个debug版本的可执行程序
b. 命令
b(break) : b [行号] : 在"行号"这一行去打一个断点
b [filename]:[行号] : 在filename这个文件的"行号"这一行去打一个断点

i b (info breakpoints) : 查看断点信息
disable [断点编号] : 使当前编号的断点失效
enable [断点编号] : 使当前编号的断点生效
delete breakpoints [num] : 删除某个断点
delete breakpoints : 删除所有的断点
r (run) : 让程序跑起来
n (next) : 逐过程的单步调试(相当于vs中的 F10 )
s (step) : 逐语句的单步调试(相当于vs中的 F11 )
p (print) : 打印变量的值
i locals : 打印当前作用域中的临时变量的值
c (continue) : 继续执行, 程序直接跑完(F5)	
d (display) : display [变量名称], 跟踪变量的值
bt : 查看调用堆栈
where : 查看调用堆栈

如果程序运行起来的时候 (事中)
ps aux | grep [可执行程序名称] ===>> 进程号

gdp -p [进程号] == gdp attach [进程号]

如果进程崩溃了(事后)
gdb 可执行程序 coredump 文件
bt p i locals

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值