栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux调试错误

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux调试错误

调试需要用到的常用命令: 调试的工具是gdb,编译时加-g(从Release文件转成Debug文件),增加调试信息 转成Debug的代码为: gcc -c main main.c -g(一定要加-g,不然转不成Debug文件) gdb test l //显示代码 b + n //在第n行加断点 r(run)//运行 n(next)//单步行 p(printf) buff //打印buff q(quit)//退出调试 s//进入函数 finsh//跳出函数 info break//查看断点位置 c//从一个断点到另一个断点. 例子(不断的从键盘输入并打印输入的内容,直到输入end结束程序):
#include 
#include 

int main()
{
	while(1)
	{
		char buff[128] = {0};
		printf("inputn");
		fgets(buff,128,stdin);

		if(strcmp(buff,"end")==0)
		{
			 break;
        }
        printf("read:%sn",buff);
 	}
    return 0;
  }
本来输入end应该结束,然而此时并没有结束,所以我们开始调试程序,查看哪里出了问题,Ctrl+C终止程序

必须先转成Debug文件(后面的-g必须加), gdb main 不能写成 gdb main.c 这样是错误的

l是显示代码

在第6行加了一个断电,然后运行程序,输入end后发现并没有终止,然后每次n往下一步执行

然后通过输出buff保存的end值发现,保存进去的是endn,所以需要修改main程序

退出调试(q)

将strcmp函数修改为strncmp函数(本次只追求调试结果对,不追求代码的完整性,可执行性)

修改完以后,重新编译main.c文件,然后执行main(./main)文件,结果正常结束程序

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309195.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号