代码编写调试总结-vimdiff / gdb / cmake
使用diff比较代码不同
命令:diff -y file1 file2
说明:-y是指并列显示。还可以加-W 200指定显示宽度。
效果如图所示:
推荐使用vimdiff来比较
vimdiff 是使用了vim编辑器来进行diff比较。
命令:vimdiff file1 file2
或:vim -d file1 file2
强烈推荐这个用法,效果如图:
使用cmake来自动生成Makefile文件
cmake可以自动产生Makefile文件。
在此保存一个cmake介绍的链接以备以后学习:
https://blog.youkuaiyun.com/zhuiyunzhugang/article/details/88142908
- 首先需要安装cmake,使用命令:sudo apt install cmake
- 编写CMakeLists.txt文件。这个文件最好和源码放在同一文件夹下。
- 使用时依次输入下列命令:
mkdir build
cd build
cmake …
make
解释:先新建build文件夹,然后切换进去,然后运行cmake(注意空格和两个点)生成Makefile,最后输入make就可以make输出可执行文件了。
使用gdb调试
gdb调试嵌入式开发板
gdb调试开发板时假设使用jlink调试,连接好以后输入命令:JLinkGDBSeverEXE,建立连接。然后依次输入命令:
arm-none-eabi-gdb
target remote Localhost:2331
monitor reset
monitor halt
file /path/file.elf
load
load以后就可以连续运行或单步调试了。可以先输入list(或简写l)来查看一下是否load成功(成功则有正确的程序打印输出)。
gdb调试c程序
这个是我们Ubuntu下写的纯C程序,有bug时需要调试,我们可以使用gdb调试。前提是编译的输出文件需要有调试信息才行。
例如我们写了最简单的一个程序,编译时需要输入命令:
gcc -o output -g source.c
注意:正常输出命令没有-g,此处加-g就是为了加入调试信息。可以使用ll查看加入调试信息的output输出文件比普通输出文件大些。
调试时使用命令:
gdb output
即可进入gdb调试状态。可以使用list查看确认。
cmake生成的Makefile加入调试信息
有3种方法可以加入调试信息:
- 在执行cmake …命令时加入debug选项。具体命令如下:
cmake -DCMAKE_BUILD_TYPE=Debug … - 在CMakeLists.txt文件中添加语句set(CMAKE_BUILD_TYPE “Debug”)
- 在CMakeLists.txt文件中添加语句
set(CMAKE_C_FLAGS “${CMAKE_C_FLAGS} -ansi -pedantic -Wall -g”)
注意:第3种方法只有-g是起debug作用,其他的可酌情删减。