对于linux下编程,我只会用这一点。
请问怎么调试?
谢谢
9 个解决方案
#1
用 gdb 的话
学学基本 gdb 的命令
gcc -g -o target source
gdb target
学学基本 gdb 的命令
#2
编译时加个开关 -g 下面是gcc常用的选项,后面会经常用到的
-g
在编译的时候,产生调试信息
-c
只激活预处理,编译和汇编,也就是把程序做成obj文件。如gcc -c test.c 就会生成test.o文件,当然这样还只是目标文件,需要经过ld连接器对所有的.o文件进行联接才能生成可执行文件.
-S
只激活预处理和编译,把文件编译到汇编代码。相当到对源程序做一个egcs操作,生成.s文件。可以查看生成的汇编文件结果。这个对于研究汇编语言的程序员来说是很有作用的。
-E
只激活预处理,这个将对文件进行预处理,将对所有引入的include文件和define定义的量进行代换,为我们开头所说的gcc编译的第一步,即用cpp命令将程序语言文件进行预处理.但这一步不生成结果文件,如果你需要生成结果文件保存,那么需要利用系统中的输出重定向。
-o
定制目标名称,缺省的时候在unix和linux平台下gcc filename的结果是一个文件名为a.out的文件,windows下用mingw里带的gcc编译结果是a.exe。如果我们用gcc -o hello.exe test.c的话,将生成hello.exe可执行程序。这个并不一定只限于最后一步可执行程序的生成,如用上面所讲的-S生成的汇编程序也可以用-o参数生成,比如 gcc -o hello.asm -S test.c 这样hello.asm就是test.c经过预处理和编译之后的结果。
-Idir
在#include 的时候,先在用这个参数指定的位置找头文件,如果没有找到,则到缺省的目录找头文件
-llibrary
用于制定编译的时候使用的库,如 gcc -lgtk tset.c则程序使用gtk库进行编译,不过需要注意的是gcc库一般都是以libname.a来命名库文件,在用-l参数来加入库文件的时候,直接用-lname来引入,而前面的lib被省掉。这一点需要注意。
-Ldir
编译的时候设定库文件查找的路径,不然的话,编译器只在标准库路径里面找库。
GDB手册在chinaunix有一份:你去好好研究下哦,gcc ,gdb, makefile在linux下编程都是很重要的东西
http://wiki.chinaunix.net/index.php/%E5%88%86%E7%B1%BB:GDB%E6%89%8B%E5%86%8C
-g
在编译的时候,产生调试信息
-c
只激活预处理,编译和汇编,也就是把程序做成obj文件。如gcc -c test.c 就会生成test.o文件,当然这样还只是目标文件,需要经过ld连接器对所有的.o文件进行联接才能生成可执行文件.
-S
只激活预处理和编译,把文件编译到汇编代码。相当到对源程序做一个egcs操作,生成.s文件。可以查看生成的汇编文件结果。这个对于研究汇编语言的程序员来说是很有作用的。
-E
只激活预处理,这个将对文件进行预处理,将对所有引入的include文件和define定义的量进行代换,为我们开头所说的gcc编译的第一步,即用cpp命令将程序语言文件进行预处理.但这一步不生成结果文件,如果你需要生成结果文件保存,那么需要利用系统中的输出重定向。
-o
定制目标名称,缺省的时候在unix和linux平台下gcc filename的结果是一个文件名为a.out的文件,windows下用mingw里带的gcc编译结果是a.exe。如果我们用gcc -o hello.exe test.c的话,将生成hello.exe可执行程序。这个并不一定只限于最后一步可执行程序的生成,如用上面所讲的-S生成的汇编程序也可以用-o参数生成,比如 gcc -o hello.asm -S test.c 这样hello.asm就是test.c经过预处理和编译之后的结果。
-Idir
在#include 的时候,先在用这个参数指定的位置找头文件,如果没有找到,则到缺省的目录找头文件
-llibrary
用于制定编译的时候使用的库,如 gcc -lgtk tset.c则程序使用gtk库进行编译,不过需要注意的是gcc库一般都是以libname.a来命名库文件,在用-l参数来加入库文件的时候,直接用-lname来引入,而前面的lib被省掉。这一点需要注意。
-Ldir
编译的时候设定库文件查找的路径,不然的话,编译器只在标准库路径里面找库。
GDB手册在chinaunix有一份:你去好好研究下哦,gcc ,gdb, makefile在linux下编程都是很重要的东西
http://wiki.chinaunix.net/index.php/%E5%88%86%E7%B1%BB:GDB%E6%89%8B%E5%86%8C
#3
也可以用ddd这个图形界面的gdb前端,用法:ddd appName
#4
有一下三个常用的工具:
gdb
kbd
ddd
其中kbd是gdb的图形化软件,简单易用,功能强大,推荐
gdb
kbd
ddd
其中kbd是gdb的图形化软件,简单易用,功能强大,推荐
#5
sorry,是kdbg
#6
学学基本 gdb 的命令
记得加参数 -g
up
记得加参数 -g
up
#7
gcc -g -o target source
这个就可以生成可执行文件了
gdb target
调试文件的,如果没有错误就可以不用这个了
这个就可以生成可执行文件了
gdb target
调试文件的,如果没有错误就可以不用这个了
#8
gcc
gdb
gdb
#9
学习了。。。。
#1
用 gdb 的话
学学基本 gdb 的命令
gcc -g -o target source
gdb target
学学基本 gdb 的命令
#2
编译时加个开关 -g 下面是gcc常用的选项,后面会经常用到的
-g
在编译的时候,产生调试信息
-c
只激活预处理,编译和汇编,也就是把程序做成obj文件。如gcc -c test.c 就会生成test.o文件,当然这样还只是目标文件,需要经过ld连接器对所有的.o文件进行联接才能生成可执行文件.
-S
只激活预处理和编译,把文件编译到汇编代码。相当到对源程序做一个egcs操作,生成.s文件。可以查看生成的汇编文件结果。这个对于研究汇编语言的程序员来说是很有作用的。
-E
只激活预处理,这个将对文件进行预处理,将对所有引入的include文件和define定义的量进行代换,为我们开头所说的gcc编译的第一步,即用cpp命令将程序语言文件进行预处理.但这一步不生成结果文件,如果你需要生成结果文件保存,那么需要利用系统中的输出重定向。
-o
定制目标名称,缺省的时候在unix和linux平台下gcc filename的结果是一个文件名为a.out的文件,windows下用mingw里带的gcc编译结果是a.exe。如果我们用gcc -o hello.exe test.c的话,将生成hello.exe可执行程序。这个并不一定只限于最后一步可执行程序的生成,如用上面所讲的-S生成的汇编程序也可以用-o参数生成,比如 gcc -o hello.asm -S test.c 这样hello.asm就是test.c经过预处理和编译之后的结果。
-Idir
在#include 的时候,先在用这个参数指定的位置找头文件,如果没有找到,则到缺省的目录找头文件
-llibrary
用于制定编译的时候使用的库,如 gcc -lgtk tset.c则程序使用gtk库进行编译,不过需要注意的是gcc库一般都是以libname.a来命名库文件,在用-l参数来加入库文件的时候,直接用-lname来引入,而前面的lib被省掉。这一点需要注意。
-Ldir
编译的时候设定库文件查找的路径,不然的话,编译器只在标准库路径里面找库。
GDB手册在chinaunix有一份:你去好好研究下哦,gcc ,gdb, makefile在linux下编程都是很重要的东西
http://wiki.chinaunix.net/index.php/%E5%88%86%E7%B1%BB:GDB%E6%89%8B%E5%86%8C
-g
在编译的时候,产生调试信息
-c
只激活预处理,编译和汇编,也就是把程序做成obj文件。如gcc -c test.c 就会生成test.o文件,当然这样还只是目标文件,需要经过ld连接器对所有的.o文件进行联接才能生成可执行文件.
-S
只激活预处理和编译,把文件编译到汇编代码。相当到对源程序做一个egcs操作,生成.s文件。可以查看生成的汇编文件结果。这个对于研究汇编语言的程序员来说是很有作用的。
-E
只激活预处理,这个将对文件进行预处理,将对所有引入的include文件和define定义的量进行代换,为我们开头所说的gcc编译的第一步,即用cpp命令将程序语言文件进行预处理.但这一步不生成结果文件,如果你需要生成结果文件保存,那么需要利用系统中的输出重定向。
-o
定制目标名称,缺省的时候在unix和linux平台下gcc filename的结果是一个文件名为a.out的文件,windows下用mingw里带的gcc编译结果是a.exe。如果我们用gcc -o hello.exe test.c的话,将生成hello.exe可执行程序。这个并不一定只限于最后一步可执行程序的生成,如用上面所讲的-S生成的汇编程序也可以用-o参数生成,比如 gcc -o hello.asm -S test.c 这样hello.asm就是test.c经过预处理和编译之后的结果。
-Idir
在#include 的时候,先在用这个参数指定的位置找头文件,如果没有找到,则到缺省的目录找头文件
-llibrary
用于制定编译的时候使用的库,如 gcc -lgtk tset.c则程序使用gtk库进行编译,不过需要注意的是gcc库一般都是以libname.a来命名库文件,在用-l参数来加入库文件的时候,直接用-lname来引入,而前面的lib被省掉。这一点需要注意。
-Ldir
编译的时候设定库文件查找的路径,不然的话,编译器只在标准库路径里面找库。
GDB手册在chinaunix有一份:你去好好研究下哦,gcc ,gdb, makefile在linux下编程都是很重要的东西
http://wiki.chinaunix.net/index.php/%E5%88%86%E7%B1%BB:GDB%E6%89%8B%E5%86%8C
#3
也可以用ddd这个图形界面的gdb前端,用法:ddd appName
#4
有一下三个常用的工具:
gdb
kbd
ddd
其中kbd是gdb的图形化软件,简单易用,功能强大,推荐
gdb
kbd
ddd
其中kbd是gdb的图形化软件,简单易用,功能强大,推荐
#5
sorry,是kdbg
#6
学学基本 gdb 的命令
记得加参数 -g
up
记得加参数 -g
up
#7
gcc -g -o target source
这个就可以生成可执行文件了
gdb target
调试文件的,如果没有错误就可以不用这个了
这个就可以生成可执行文件了
gdb target
调试文件的,如果没有错误就可以不用这个了
#8
gcc
gdb
gdb
#9
学习了。。。。