linux下安装工具特别简单:

sudo install gdb

但是我是Windows系统,我觉得可以尝试Windows下来搞搞,同样有指令对吧,于是我用cmd.exe来做,发现linux和Windows的客户端命令完全是两套,这样没有意义。

其实有两种,一种是使用虚拟linux,但是只能练习指令,不能运行代码,没意义;另一种是使用VMwarhie虚拟机,但是其实也麻烦,我这台笔记本配置没那么好。

然后我想起了我之前学习git的时候发现,git命令窗口可以使用很多类似linux的指令,我于是开始利用git来做这件事。

当然我也很好奇,为什么git可以做到,我查到了一个东西——MinGW

MinGW

MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。

MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。正因为如此,MinGW 现已被 MinGW-w64 所取代,且 MinGW 也早已停止了更新,内置的 GCC 停滞在了 4.8.1 版本,而 MinGW-w64 内置的 GCC 则更新到了 8.1.0 版本。(2020/12/15)

GCC

GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、MacOS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。

GNU

GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU's Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。

尝试——gcc编译文件

给git-bash加点儿料——gcc、make、cmake:https://zhuanlan.zhihu.com/p/149305469

路径不能有空格,实在要有,可以采用 \\ 来替代 \

然后创建两个源文件,一个douya.c, 一个max.c

然后调用程序。

$ gcc -g max.c douya.c -o douya

$ ./douya

编写makefile http://c.biancheng.net/view/7111.html

在看别人写的Makefile文件时,你可能会碰到以下三个变量:

他们三个是十分重要的三个变量,所代表的含义分别是:

$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。

shell 中使用的通配符有:"*","?","[...]"。具体看一下这些通配符的表示含义和具体的使用方法。

图片说明

还有一个和通配符"*" 相类似的字符,这个字符是 "%",也是匹配任意个字符,使用在我们的的规则当中。

SRC = $(wildcard *.c)  
OBJ = $(patsubst %.c, %.o, $(SRC))  

ALL: douya  

douya: douya.o max.o
    gcc -g $^ -o $@

%.o: %.c
    gcc -g -c $^ -o $@

为运行的程序生成core文件

查看这个进程的pid

ps aux | grep this_process

gdb attach this_pid

gcore test.core

detach

为崩溃的进程创建core dump文件

ulimit -c unlimited

跟随一个进程调试

ps -ef | grep this_process

gdb -p this_pid