C语言_简单罗列初级开发常见错误和gdb断点调试
前言
暂时没有前言直接说
常见编译错误
1.将 "main"入口方法 写成 "mian"
这在编译时 会出现类似提示错误:"main函数未定义"。
2.大括号“{” 书写过多或过少
这在编译时错误定在最后一行,显示最后一行有错误。
3.缺少分号";"
这样在编译时类似会提示错误 (缺少分号的代码行的下一行代码前)缺少;
4.函数名称写错
这样在编译时会提示类似的错误:未定义的函数,找不到这个函数的声明语句
5.中英文符号混淆
这样在编译时会出现类似 '\273' '\255'的游离错误
还有等等错误:左值错误 这说明你可能操作了 常量; 段错误:这说明非法访问了内存;总线错误:大概意思时在SPARC等RISC类型的CPU中发生了"违反定位访问"的情况。
逻辑错误
一般指思维过程中违反形式逻辑规律的要求和逻辑规则而产生的错误;也就是编译不会出现错误,当程序运行时,程序运行逻辑和需求不统一。
gdb 调试
概述
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端。
怎么使用?
1.生成可执行文件
gcc -g 源代码文件 -o 目标文件
2.启动 gdb
gdb 目标文件
3.调试 (输入名称) 命令罗列如下:
lurongshuang@ubuntu:~/work/work1020$ gcc -g main.c -o test -l dl
lurongshuang@ubuntu:~/work/work1020$ ls
add.c add.h add.o a.out libadd.so main.c main.o test
GNU gdb (Ubuntu 8.2.91.20190405-0ubuntu3) 8.2.91.20190405-git
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from test...
(gdb) r
Starting program: /home/lurongshuang/work/work1020/test
1+1=2
[Inferior 1 (process 22521) exited normally]
(gdb) Quit
命令 ———— 命令缩写 ———— 命令说明
list ———— l ———— 显示多行源代码
break ———— b ———— 设置断点,程序运行到断点的位置会停下来
info ———— i ———— 描述程序的状态
run ———— r ———— 开始运行程序
display ———— disp ———— 跟踪查看某个变量,每次停下来都显示它的值
step ———— s ———— 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句
next ———— n ———— 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句)
print ———— p ———— 打印内部变量值
continue ———— c ———— 继续程序的运行,直到遇到下一个断点
start ———— st ———— 开始执行程序,在main函数的第一条语句前面停下来
file ———— ———— 装入需要调试的程序
set var name=v ———— ———— 设置变量的值
kill ———— k ———— 终止正在调试的程序
watch ———— ———— 监视变量值的变化
backtrace ———— bt ———— 产看函数调用信息(堆栈)
frame ———— f ———— 查看栈帧
quit ———— q ———— 退出GDB环境