目录

前言

在linux上编写程序

生成可调式程序文件

    调试:

     打断点:

     删除断点:

     给函数打断点


前言

    我们在编译器上编写的程序只需要按运行键就可以运行出结果,在linux上我们也能编写程序,不过linux上要运行程序还需要手动做一些处理,本篇就讲讲linux上编写好的程序的生成,程序的调试以及打断点

在linux上编写程序

    首先打开Xshell,在指令行输入vi main.c (main.c是文件名) 后进入编译,然后按i进入插入模式开始编写程序

 写好程序代码后我们切换到普通模式输入 :wq 保存并退出,这时我们的目录里就多了一个main.c文件

 要想运行代码就必须先手动预处理:

①:输入gcc -E main.c -o main.i  进行预处理,完成后就会生成一个main.i文件

②:输入 gcc -S main.i -o main.s 进行编译,完成后就会生成一个main.s文件,如果代码有问题那么在这一步就会报错,比如我的printf函数名输入错误:

 这时我们再vi main.c 进入main.c文件进行修改,改完后再重新编译,也就是重复以上两步

完成上面两步后我们再进行汇编:输入 gcc -c main .s -o main.o 来生成main.o文件

最后再输入 gcc main.o -o main 生成最终文件main

 运行main文件:输入 ./main

 以上步骤也可以一步完成:

直接输入 gcc main.c -o main

生成可调式程序文件

输入 gcc -g main.c -o main

此时的main文件就是个可调式文件

然后我们输入gdb ./main进入调试

 在末尾行输入run 直接运行,输入start 开始调试,输入quit退出调试

    调试:

    输入start后,再输入next或n进行单步调试,还有一种是输入step或s进行逐语句调试。这俩方式类似于vs里的F11和F10。

     打断点:

    打断点前要先知道需要打断点的地方,输入list 10 查看第10行附近的代码

    输入 break main :10 给第10行打断点

     输入info break查看已打断点

     删除断点:

    输入delete 3 删除3号断点,也就是第5行的断点

     输入print a 可打印a的值,也可以用print 给a赋值,输入print a=1 (注意使用print打印a时需要a这个变量在作用域内)

     给函数打断点

    输入break printf 给printf函数打断点

     这时前面的序号就是行数

 

输入 backtrace 或 bt 查看函数调用栈(当前程序运行到的位置,当运行出错时调用函数调用栈可以找到出错的位置)

 

Logo

更多推荐