gdb调试的常用操作和彩色进度条的实现

为什么调试的时候需要编译选项中添加 -g?
gcc默认生成的可执行程序时release版本
然而程序想要能够调试必须是debug 版本
生成debug版本的命令:gcc -g main.c -o main
常用操作:
1.启动 gdb :gdb加载程序信息;gdb加载程序时如果有程序运行参数,不能加载的时候给 与, 应该开始调试的时候给.
gdb ./main -> run -l -a
两种方式:

 1.gdb ./execfile
 2.gdb运行起来后;内部运行   file exefile

2.开始调试:

 start   开始逐步调试     
 run   直接运行程序;若有错误直到错误处停止

3.常见操作:

list  查看代码(打印出10行)
       单个文件: list codeline              多个文件:list 文件名:codeline
n:下一步 不进入函数,相当于vsF10         s:下一步跟踪进入函数,相当于vsF11
until直接运行到指定行   until file:line           

4.断点相关操作

break   :打断点                          		info   查看调试信息
break file:line (在指定出设置断点)                info break  查看断点信息
break function_name(在指定函数处设置断点)
print   查看变量内容                             continue   继续运行(从这一个断电运行到下一个节点,没有下一个节点直接运行完)
print value                                     delete:删除断点    
												delete:删除所有断点,
												delete break_id:删除指定断点
watch 变量监控,当变量内容改变时,停下来      watch value

5.查看函数调用栈信息

backtrace(bt):查看函数调用栈信息--快速定位程序崩溃位置(0号就是出错函数)
gcc常用选项
    -E:   预处理
    -S:   编译
    -c:   汇编
    -o:   指定生成文件名称
    -static  静态链接
    -g;   开启程序调试模式,加入调试符号信息生成debug版本
    gcc -g main.c -o main

进度条程序实现:

#include<stdio.h>
#include<stdlib.h>
#include <unistd.h>
#include<string.h>
 
int main()
{
   int i =0;
   char bar[101]={0};
   for(i=0;i<101;i++)
   {
     bar[i]='0';
     printf("\033[1;31;44m%s\033[0m [%d%%]\r",bar,i);
    fflush(stdout);
     bar[i]=' ';
     usleep(100000);
   }
   printf("\n");
   return 0;                                                                                                                                     
}

运行结果:
在这里插入图片描述
转义序列以控制字符’ESC’开头。多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符,通常由’\033[‘或’\e[‘代替。
通过转义序列设置终端显示属性时,可采用以下格式:

\033[ Param {;Param;…}m 或 \e[ Param {;Param;…}m
显示序列:
\033[0m           关闭转义序列
\033[1m           粗体或高亮
\033[5m           闪烁
前景颜色序列:
\033[40m          黑
\033[41m          红
\033[42m          绿
\033[43m          黄
\033[44m          蓝
\033[45m          洋红
\033[46m          青
\033[47m          白

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值