Linux下生成可执行程序和可调试程序
我们在编译器上编写的程序只需要按运行键就可以运行出结果,在linux上我们也能编写程序,不过linux上要运行程序还需要手动做一些处理,本篇就讲讲linux上编写好的程序的生成,程序的调试以及打断点。(gdb、print、start'、run、next、step、info、break、backtrace、bt等)
目录
前言
我们在编译器上编写的程序只需要按运行键就可以运行出结果,在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 查看函数调用栈(当前程序运行到的位置,当运行出错时调用函数调用栈可以找到出错的位置)
更多推荐
所有评论(0)