1.背景
2.开始使用
gdb 二进制文件 退出:ctrl+d 或 quit
调试命令:
1.打印字符串时带 ‘\n‘
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello world!\n");
sleep(3);
return 0;
}
运行结果:
这里我们观看到结果:先显示出打印结果并换行,5秒后程序运行结束。
2.打印字符串时不带 ‘\n‘
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello world!");
sleep(3);
return 0;
}
运行结果:
这里输出结果为,前五秒什么都没输出,5秒后打印出字符串内容,但是未曾换行。
3.打印字符串时带 ‘\n‘ && fflush刷新缓冲区
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello Makefile!");
fflush(stdout);
sleep(3);
return 0;
}
运行结果同第二个,但是现象为,先打印字符串内容,五秒后程序退出,并且也没有换行。
4.打印字符串时带 ‘\r‘
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello chuizi!\r");
sleep(3);
return 0;
}
运行结果为,未打印出字符串内容,五秒后程序退出,仍未显示出字符串的内容。此处不方便演示,读者可自行验证。
5.打印字符串时带 ‘\r‘ && fflush刷新缓冲区
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello chuizi!\r");
fflush(stdout);
sleep(3);
return 0;
}
运行结果:
运行结果为,先打印出字符串内容,然后五秒后内容清空。这里我们注意到光标在h位置,那么从这可以看出:/r是只回车(让光标回到这一行的初始位置),/n是回车加换行。
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main()
{
int i = 0;
char bar[102];
memset(bar,‘\0‘,sizeof(bar));
const char*lable = "|/-\\";
int j=0;
int color[]={1,2,3,4,5,6,7};
for(; i <= 100; i++)
{
bar[i] = ‘*‘;
printf("\033[3%dm[%-101s]\033[0m\033[33m[%d%%]\033[0m[%c]\r", color[j],bar,i,lable[i%4]);
fflush(stdout);
if(i%15 == 0){
++j;
}
usleep(100000);
}
printf("\n");
return 0;
}
Linux调试器-gdb使用 && Linux彩色进度条实现
原文:https://blog.51cto.com/14289099/2546160