25.06.2015 Views

vim使用进阶

vim使用进阶

vim使用进阶

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

在 vim 中 使 用 gdb 调 试<br />

sample: sample.c factor/factor.c<br />

gcc -g -Wall -o sample sample.c factor/factor.c<br />

假 设 vim 的 当 前 工 作 目 录 是 ~/tmp( 使 用 ":cd ~/tmp" 命 令 切 换 到 此 目 录 )。 我 们 编 辑 完 上 面 几 个 文<br />

件 后 , 输 入 命 令 ":make",vim 就 会 根 据 Makefile 文 件 进 行 编 译 。 如 果 编 译 出 错 ,vim 会 跳 到 第 一<br />

个 出 错 的 位 置 , 改 完 后 , 用 ":cnext" 命 令 跳 到 下 一 个 错 误 , 以 此 类 推 。 这 种 开 发 方 式 被 称 为<br />

quickfix, 我 们 已 经 在 剑 不 离 手 - quickfix 一 文 中 讲 过 , 不 再 赘 述 。<br />

现 在 , 假 设 已 经 完 成 链 接 , 生 成 了 最 终 的 sample 文 件 , 我 们 就 可 以 进 行 调 试 了 。<br />

vimgdb 补 丁 已 经 定 义 了 一 些 键 绑 定 , 我 们 先 加 载 这 些 绑 定 :<br />

:run macros/gdb_mappings.vim<br />

加 载 后 , 一 些 按 键 就 被 定 义 为 调 试 命 令 (vimgdb 定 义 的 键 绑 定 见 ":help<br />

按 可 以 在 按 键 的 缺 省 定 义 和 调 试 命 令 间 切 换 。<br />

gdb-mappings")。<br />

好 了 , 我 们 现 在 按 空 格 键 , 在 当 前 窗 口 下 方 会 打 开 一 个 小 窗 口 (command-line 窗 口 ), 这 就 是<br />

vimgdb 的 命 令 窗 口 , 可 以 在 这 个 窗 口 中 输 入 任 何 合 法 的 gdb 命 令 , 输 入 的 命 令 将 被 送 到 gdb 执 行 。<br />

现 在 , 我 们 在 这 个 窗 口 中 输 入 "gdb", 按 回 车 后 ,command-line 窗 口 自 动 关 闭 , 而 在 当 前 窗 口 上<br />

方 又 打 开 一 个 窗 口 , 这 个 窗 口 是 gdb 输 出 窗 口 。 现 在 vim 的 窗 口 布 局 如 下 ( 我 又 按 空 格 打 开 了<br />

command-line 窗 口 ):<br />

点 击 查 看 大 图<br />

小 技 巧 : command-line 窗 口 是 一 个 特 殊 的 窗 口 , 在 这 种 窗 口 中 , 你 可 以 像 编 辑 文 本 一 样 编 辑<br />

命 令 , 完 成 编 辑 后 , 按 回 车 , 就 会 执 行 此 命 令 。 你 要 重 复 执 行 某 条 命 令 , 可 以 把 光 标 移 到 该 命 令<br />

所 在 的 行 , 然 后 按 回 车 即 可 ; 你 也 可 以 对 历 史 命 令 进 行 修 改 后 再 执 行 。 详 见 ":help cmdlinewindow"。<br />

接 下 来 , 在 command-line 窗 口 中 输 入 以 下 命 令 :<br />

cd ~/tmp<br />

file sample<br />

这 两 条 命 令 切 换 gdb 的 当 前 工 作 目 录 , 并 加 载 我 们 编 译 的 sample 程 序 准 备 调 试 。<br />

72

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!