发新话题
打印

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

我看过不少这方面的文章,可是还有问题# O4 f6 M" \0 c8 r/ x
首先,请具体告诉我vi里,怎么选定一段数据,怎么复制和粘贴这段数据?
* f' R2 L: Z1 U! c3 B; sgcc怎么调试程序,也就是说,怎么一句一句执行调试程序,找出错误?
( d2 {& f! ~! x/ X5 b* r

TOP

首先,我要问问:为什么要用vi?这个昨日黄花,一点都不好用,却被有些人吹为学Linux必学工具;我真不能理解。其实,现在在命令行或者X Window下有很多很好的编辑工具。为什么放着好好的工具不用,却要ask for trouble? 好了,牢骚发完,如果你真的那么对vi情有独钟,这里是你的问题的我的答案:
0 }- X0 Y- P/ E  ?要复制数据,先把光标移动到所要复制数据的第一行,然后用以下命令:$ m5 ^9 `! v0 @" `
yy表示复制当前行
2 Q, K& R$ V4 P; Bnyy表示复制从当前行开始的n行  q# n2 s2 b& Y9 @+ ^2 [2 G$ C
内容将被复制到一个特定的内存缓冲区。(从文中删除的内容其实也被复制到缓冲区,从而可以实现剪切功能。)该缓冲区,并不是“剪贴板”,因为它是不能为vi以外的程序使用的。- |/ D; i, R* c( H+ ?6 E% n7 v
要把缓冲区的内容粘贴到指定位置,用下面的命令:
0 p( D' p4 z$ Z: w4 h; sp (小写p,将缓冲区的内容粘贴到光标后面)
/ M0 D( ^2 Z3 |9 f3 iP (大写P,将缓冲区的内容粘贴到光标前面)
( p) d$ m3 w1 M; n4 p. t+ Z最后还是建议你使用X Window下的编辑工具,例如KWrite,使用方法简单而有方便;就是要使用vi,如果你是想用来编辑程序源代码,那么请用vim,它能高亮显示保留词和命令。
' B2 Y+ a9 `7 |5 l2 H4 z4 {" ]
; o2 Z4 Y2 o% b/ V第二个问题。gcc是用来编译程序,而不是用来调试程序的。调试程序要用特定的工具。例如gdb(又是一个被吹捧,却难用的东西),KDbg等。其中,KDbg是GUI的,使用方法一目了然,这里不说了。还是把废话留给gdb吧。. o& u& V& j! J% `6 U
gdb用法很多,这里只介绍最常用的。0 A: @2 X3 n4 }$ l& U! n
* y( Y. p( r7 ?! ^
启动:
" q9 h3 r/ L% v, E- j$ rgdb program   把可执行文件program调人,以调试2 ?2 g$ k# }, J3 ?& Q. i
gdb program core  调试中,分析core文件
2 {9 W$ h3 o1 S* h3 F9 r, Z( qgdb 直接进入+ g# D& w5 o- h! s; p, V6 \7 q
3 G/ y( O7 i$ E! m. Y
在线帮助:
* _7 M/ [6 r8 O7 p$ e进入后,用help命令8 o0 k7 [* P% T- H! `

8 D/ J1 N% [2 I; u1 P4 p9 U开始调试:0 A) \% ~1 u8 d0 s
run
9 F8 C/ d& F( E: ]7 X6 e4 @6 R0 j( G+ T) i
设断点:. ?! k; B& A" _& o+ |! U* ]
break n  在当前文件的第n行设置断点
  \% ~+ @, j7 r# h4 u( bbreak function 在当前文件的function函数入口处设置断点
  z' \- Q# T& t1 @, t" _8 X6 Zbreak file:n 在file文件中的第n行设置断点
, y, C$ p" y3 B. W0 h8 m) ]4 R% L- T. pbreak file:fun 在file文件中的fun函数入口处设置断点1 T, a  s& }* t+ [- g% @

% Q% c5 k% v7 I5 s/ R9 W单步调试:
# l4 K9 }! i9 l% ^step   单步执行,遇函数进入
: A/ a5 y' y0 g4 d: M7 ~step n 同上,执行n步
! e: e! p6 F8 f- q2 u1 B) F& gnext   单步,但遇函数不进入
' n, y8 K. L0 W; Xcontinue 继续执行,知道结束或断点" Y( [9 ?7 Q& N; F8 u0 I5 j; v

: i& C: J4 K% m4 x( |最后,给个建议,能用方便的工具,就方便的,没必要自找麻烦!!

TOP

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

TOP

[QUOTE]原文由 disguise 发表7 t, c0 t& |, E7 J% _. X; K
[B]gdb好象不能调试c源程序吧,我的程序有问题,无法编译成功,用什么可以调试c源程序? [/B][/QUOTE]/ |( |6 A' A9 \! t2 W: ~* Q5 `

* G4 a6 l7 Q8 Z) A: o1 ^那就先看gcc给出的出错提示,把程序改到能编译(即使运行错误),再调试吧。

TOP

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

TOP

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

TOP

在用gcc编译时,加上-g参数。
; n0 m; a# h1 W: t' `1 h用gdb时,输入list命令,如果能看到源程序,就说明成功了。
庄子曰:“?鱼出游从容,是鱼之乐也。” 惠子曰:“子非鱼,安知鱼之乐?” 庄子曰:“子非我,安知我不知鱼之乐?” 惠子曰:“我非子,固不知子矣;子,固非鱼也,子之不知鱼之乐,全矣。” 庄子曰:“请循其本。子曰‘汝安知鱼乐’云者,既已知吾知之,而问我;我知之濠上也。”

TOP

FreeBSD里没有vim呀?

TOP

发新话题