发新话题
打印

我看过不少这方面的文章,可是还有问题

我看过不少这方面的文章,可是还有问题' }* r) B$ w5 w# M  n& q$ Z
首先,请具体告诉我vi里,怎么选定一段数据,怎么复制和粘贴这段数据?$ x6 A# ]# Y4 f5 I7 G5 h! L
gcc怎么调试程序,也就是说,怎么一句一句执行调试程序,找出错误?3 h  U& ?& r5 a5 \& i5 U  M; P, \# o/ i
      

TOP

首先,我要问问:为什么要用vi?这个昨日黄花,一点都不好用,却被有些人吹为学Linux必学工具;我真不能理解。其实,现在在命令行或者X Window下有很多很好的编辑工具。为什么放着好好的工具不用,却要ask for trouble? 好了,牢骚发完,如果你真的那么对vi情有独钟,这里是你的问题的我的答案:
$ }7 {0 R$ ^/ A' w, l- _要复制数据,先把光标移动到所要复制数据的第一行,然后用以下命令:- l% T2 _9 B7 V
yy表示复制当前行8 Q8 Y/ R* ^) G; c- A, Q* p
nyy表示复制从当前行开始的n行
% C; t' ]! H; a, T内容将被复制到一个特定的内存缓冲区。(从文中删除的内容其实也被复制到缓冲区,从而可以实现剪切功能。)该缓冲区,并不是“剪贴板”,因为它是不能为vi以外的程序使用的。
) Z' H% J. ]1 i! H- X要把缓冲区的内容粘贴到指定位置,用下面的命令:6 p  m& h9 ]( i- ?2 l2 E
p (小写p,将缓冲区的内容粘贴到光标后面)
: r, E1 B1 B4 X5 t. F6 r5 s2 DP (大写P,将缓冲区的内容粘贴到光标前面)
9 _' K9 e) D' E9 r3 h; i9 W5 s最后还是建议你使用X Window下的编辑工具,例如KWrite,使用方法简单而有方便;就是要使用vi,如果你是想用来编辑程序源代码,那么请用vim,它能高亮显示保留词和命令。& ^7 f, k. u6 a, O

2 _8 G: E/ U# P- s第二个问题。gcc是用来编译程序,而不是用来调试程序的。调试程序要用特定的工具。例如gdb(又是一个被吹捧,却难用的东西),KDbg等。其中,KDbg是GUI的,使用方法一目了然,这里不说了。还是把废话留给gdb吧。7 d/ W7 Y% P# y% {
gdb用法很多,这里只介绍最常用的。
  g, o! Y& |+ O9 @% O" {1 ]  N: \' u8 l0 A
启动:- a) ?4 X) J: Z  k" `
gdb program   把可执行文件program调人,以调试
4 `/ x/ X8 E1 V- s4 Pgdb program core  调试中,分析core文件  X$ q( W# U1 U* `; b" F
gdb 直接进入9 ~. p3 K( \! t: ^% i. Z
* b. ]; u% @4 D) |7 L; j* I2 S3 N
在线帮助:" i6 G" S1 K; b: v+ [
进入后,用help命令
1 S+ R, ~. ]6 t8 ~
7 {* g) C% b0 l开始调试:0 c9 ^  a6 V. y1 {
run/ V$ ?0 d; F3 E+ U4 g
# Z, [* G6 ]4 M3 w/ T3 [; q
设断点:9 i/ U5 T- h8 Y4 n5 ]8 a
break n  在当前文件的第n行设置断点3 q$ d4 o/ J" x/ {
break function 在当前文件的function函数入口处设置断点
2 f& z+ g- M) J/ c+ |break file:n 在file文件中的第n行设置断点
3 n$ y- o& W* n0 V% k' u3 nbreak file:fun 在file文件中的fun函数入口处设置断点
1 h! I" H3 U4 n0 `  s4 j
" o5 j& b9 t7 j8 E单步调试:
1 s) o9 _: Z4 g0 Xstep   单步执行,遇函数进入
* @" h, p! @9 y3 t4 `) o! Ystep n 同上,执行n步0 v9 U, g% {7 k) a; \$ E0 g
next   单步,但遇函数不进入
7 a: E# s4 S9 lcontinue 继续执行,知道结束或断点
8 I0 H% v3 s" A1 B1 m0 L" c
' C2 C$ F) M: ]' i+ B- K  i5 F最后,给个建议,能用方便的工具,就方便的,没必要自找麻烦!!      

TOP

gdb好象不能调试c源程序吧,我的程序有问题,无法编译成功,用什么可以调试c源程序?      

TOP

[QUOTE]原文由 disguise 发表; F% A, c9 a  n) m3 e# a
[B]gdb好象不能调试c源程序吧,我的程序有问题,无法编译成功,用什么可以调试c源程序? [/B][/QUOTE]
+ G' H; D7 l+ C" I. B, w9 F
( S0 I( G  W0 c4 c那就先看gcc给出的出错提示,把程序改到能编译(即使运行错误),再调试吧。      

TOP

dbg能调试程序,这是我试过的;但我真的很少用。我通常是在程序中加入输出来调试程序的。      

TOP

怎么说详细一点,你怎么做?      

TOP

在用gcc编译时,加上-g参数。8 g! u: g$ k$ y3 ~) k4 \. A! q8 f
用gdb时,输入list命令,如果能看到源程序,就说明成功了。      
庄子曰:“?鱼出游从容,是鱼之乐也。” 惠子曰:“子非鱼,安知鱼之乐?” 庄子曰:“子非我,安知我不知鱼之乐?” 惠子曰:“我非子,固不知子矣;子,固非鱼也,子之不知鱼之乐,全矣。” 庄子曰:“请循其本。子曰‘汝安知鱼乐’云者,既已知吾知之,而问我;我知之濠上也。”

TOP

FreeBSD里没有vim呀?      

TOP

发新话题