`

c语言学习笔记五

    博客分类:
  • c
c 
阅读更多

gdb调试工具
sudo su 切换到root用户
mkdir 新建程序文件目录tc
cat >test.c //新建文件
直接编写程序

示例代码如下:
#include <stdio.h>
int add_range(int low,int high){
int i,sum;
for(i=low;i<=high;i++){
sum=sum+i;
}
}
int main(void){
int result[100];
result[0]=add_range(1,10);
result[1]=add_range(1,100);
printf("result[0]=%d\nresult[1]=%d\n",result[0],result[1]);
return 0;
}


编译gcc -g -o test test.c
使用gdb进行源码级调试:
gdb test
查看命令类别:help
查看某一类加有哪些命令:help files

退出gdb调试quit


backtrace (或bt) 查看各级函数调用及参数
finish 连续运行到当前函数返回为止,然后停下来等待命令
frame (或f)帧编 选择栈帧号
info (或i) locals 查看当前栈帧局部变量的值
list (或l) 列出源代码,接着上次的位置往下列,每次列10行
list 行号 列出从第几行开始的源代码
list 函数名 列出某个函数的源代码
next (或n) 执行下一行语句打印表达式的值,通过表达式可以修改变量
的值或者调用函
print (或p) 数
quit (或q) 退出gdb调试环境
set var 修改变量的值
start 开始执行程序,停在main函数第一行语句前面等待命令
step (或s) 执行下一行语句,如果有函数调用则进入到函数中




断点


示例程序
#include<stdio.h>
int main(void){
int sum=0,i=0;
char input[5];
while(1){
scanf("%s",input);
for(i=0;input[i]!='\0';i++){
sum=sum*10+input[i]-'0';
}
printf("input=%d\n",sum);
}
return 0;
}
编译程序:gcc -g -o test2 test2.c
运行程序:./test2
ctrl+c退出运行


开始gdb调试:start
每次停下来时显示sum的值:display sum
继续执行:next
取消跟踪显示:undisplay 1(标号)
在第九行设断点: breakpoint 9
单步运行:continue
删除断点:delete breakpoints 3(标号)
设置断点仅在sum不等于0的时候中断:break 9 if sum!=0






基本命令:
break (或b)行号 在某一行设置断点
break 函数名 在某个函数开头设置断点
break ... if ... 设置条件断点
continue (或c) 从当前位置开始连续运行程序
delete breakpoints 断点号 删除断点
display 变量名 跟踪查看某个变量,每次停下来都显示
disable breakpoints 断点号禁用断点
enable 断点号 启用断点
info (或i) breakpoints 查看当前设置了哪些断点
run (或r) 从头开始连续运行程序
undisplay 跟踪显示号 取消跟踪显示








观察点
示例程序:
#include<stdio.h>
int main(void){
int sum=0,i=0;
char input[5];
while(1){
scanf("%s",input);
for(i=0;input[i]!='\0';i++){
sum=sum*10+input[i]-'0';
}
printf("input=%d\n",sum);
}
return 0;
}


开始调试:start
p input
打印指定单元的内容:x/7b(打印格式,b表示每个字节一组)
设置观察点: watch input[5]




基本命令;
watch 设置观察点
info (或i) 查看当前设置了哪些观察点
watchpoints 从某个位置开始打印存储单元的内容,全部当成字节来看,而
x 不区分哪个字节属于哪个变量









段错误

示例代码:
#include <stdio.h>
int main(void){
int man=0;
scanf("%d",man);
return 0;
}

gdb test3
gdb r
bdb bt

分享到:
评论

相关推荐

    全套C语言学习笔记 -- 大Z的C语言授课笔记

    【C语言学习笔记】 C语言是一种强大的编程语言,它的学习笔记涵盖了从基础知识到高级特性的全方位内容。在学习C语言时,首先需要了解文件类型,如C语言的源文件通常以`.c`为扩展名,而C++源文件是`.cpp`。头文件`.h...

    C语言学习笔记 C语言学习笔记

    本压缩包包含的“C语言学习笔记”是一份详尽的C语言学习资料,旨在帮助读者深入理解和掌握C语言的基本概念、语法结构以及实际应用技巧。 一、C语言基础 C语言的基础包括变量、数据类型、运算符、流程控制等。变量...

    谭浩强C语言学习笔记

    谭浩强C语言学习笔记 这是一本关于C语言的学习笔记,涵盖了从基本概念到高级应用的所有方面。下面是从中提取的重要知识点: 一、C语言概述 * C语言的历史和发展 * C语言的特点:结构化、模块化、可移植性、高效性...

    C语言学习笔记.zip

    本压缩包“C语言学习笔记.zip”包含了丰富的C语言学习资料,主要集中在“c-notes-master”这个子目录下,适合初学者和有一定基础的程序员进行深入学习。 在C语言的学习中,首先要掌握的基本概念包括变量、数据类型...

    C语言学习笔记C语言学习笔记.doc

    C语言学习笔记C语言学习笔记

    C语言学习笔记 必看知识点

    C语言学习笔记 必看知识点 精品啊 值得看

    c语言学习笔记,好东西

    本压缩包包含了一份精心整理的C语言学习笔记,旨在帮助读者深入理解和掌握C语言的核心概念与技术。 笔记首先从基础语法开始,包括变量、数据类型、运算符以及表达式。C语言中的数据类型有基本类型如int、char、...

    C语言学习笔记

    C语言学习笔记,C语言学习笔记,qsort排序。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    C语言学习笔记基础完整

    本学习笔记旨在全面覆盖C语言的基础部分,帮助初学者掌握其核心概念和语法。 一、C语言概述 C语言由贝尔实验室的Dennis Ritchie在1972年创造,它的特点是运行效率高,程序控制性强,语法简洁。C语言是许多现代编程...

    郝斌老师C语言学习笔记

    ### 郝斌老师C语言学习笔记 #### 一、终端基础命令 郝斌老师的笔记首先介绍了几个常用的终端命令,这些命令对于操作文件系统至关重要。 - **pwd**:此命令用于显示当前工作目录的完整路径。 - **ls**:列出当前...

    C语言学习笔记.pdf

    ### C语言学习笔记知识点梳理 #### 一、C语言中的函数 C语言中的函数是程序设计的基本单位之一,主要用于组织代码、实现特定功能并能够被重复调用。 1. **函数分类** - **库函数**:由系统提供的标准函数,如`...

    C语言学习笔记(个人总结)

    ### C语言学习笔记知识点梳理 #### 一、计算机系统概述 **1.1 计算机系统功能** - **输入**: 将外部数据输入到计算机系统中。 - **处理**: 数据通过程序处理后生成新的数据。 - **输出**: 处理后的数据输出到外部...

    c语言学习笔记.pdf

    c语言学习笔记.pdf

    C语言学习笔记1

    在C语言学习中,了解内存管理、数据类型、输入输出函数...以上就是C语言学习笔记第一课中的主要知识点。学习C语言时,理解并熟练运用这些基础知识是编写程序的关键。通过不断地练习和实践,可以更好地掌握C语言的精髓。

    c语言学习笔记 c语言学习笔记

    这些是C语言学习的基础知识,理解并掌握它们对于编写有效的C语言程序至关重要。通过深入学习和实践,你可以进一步探索指针、数组、结构体、文件I/O等更高级的主题,从而成为C语言的熟练开发者。

    嵌入式C语言学习笔记

    嵌入式C语言学习笔记 本文总结了嵌入式C语言学习笔记的要点,涵盖了运算符优先级、指针的用法、二分法查找、字符串操作、冒泡排序法、寻址方式、存储区域、volatile含义及应用等多个方面。 一、运算符优先级 在...

    C语言学习笔记.rtf

    C语言学习笔记,一些学习笔记与大家分享

    C语言学习笔记——基础知识篇

    本资源包"**C语言学习笔记——基础知识篇**"是为C语言初学者或需要复习C语言概念的人准备的宝贵资料。 首先,我们要了解C语言的基础知识。C语言的语法结构基于ALGOL60和BCPL,由Dennis Ritchie在贝尔实验室设计和...

Global site tag (gtag.js) - Google Analytics