ITPub博客

首页 > 数据库 > Oracle > [20260927]rlwrap与gdb配合使用问题.txt

[20260927]rlwrap与gdb配合使用问题.txt

原创 Oracle 作者:lfree 时间:2026-10-06 20:54:30 0 删除 编辑

[20260927]rlwrap与gdb配合使用问题.txt

--//我个人比较偷懒,打过的命令总想不再按复杂的按键再次调唤出来。
--//但是gdb现在的版本内部集成了readline库,但是两种总是配合不好,打过的命令退出后就没有记忆了,无法再调出。

--//以前在centos 7.4就遇到类似问题,参考链接 : 20240922]gdb与rlwrap使用问题.txt
--//当时的感觉就是还不如没有以前的情况好用,指gdb不包括readline库。
--//gdb 内部自身存在命令补全的功能,加入rlwrap后失去作用,要另外自己建立字典。
--//使用centos 9还是也遇到类似问题。

--//kimi的解答:
虽然基本兼容,但在某些特定场景下可能会遇到问题:

自动补全的"接管"问题:gdb 本身有自己的自动补全系统。当你在 gdb 内部使用 Python 的 ipython 等子环境后,rlwrap 的补全功能
可能会"接管"原本 gdb 的符号补全,导致从 ipython 退出后,gdb 的符号补全失效。

终端控制序列干扰:某些情况下,gdb 或 rlwrap 输出的终端控制序列可能会相互干扰,导致界面显示异常。可以尝试为 gdb 添加 -t
dumb 选项来简化终端控制。

--always-readline 选项:如果你的 gdb 使用过程中需要调用分页器或编辑器,可以尝试使用 rlwrap -a gdb(-a 即
--always-readline)来保持 readline 模式。但请注意,这可能会使密码提示等敏感信息被回显和记录  。

总的来说,rlwrap gdb 的组合在 CentOS 上是可行的,能显著改善 gdb 的命令行交互体验,但在处理复杂补全或终端交互时可能需要一
些额外的调整。

$ ldd $(which gdb) | egrep -i "read|ncurse"
        libreadline.so.8 => /lib64/libreadline.so.8 (0x00007fc6377a8000)
        libncursesw.so.6 => /lib64/libncursesw.so.6 (0x00007fc637697000)

--//centos 7链接的是 libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f0a3e318000)
--//有w 没有w 不知道区别在那里。

--//建立别名如下,在~/.bash_profile文件加入如下:
$ grep gdb ~/.bash_profile
alias rlgdb="rlwrap --always-readline -N -r -f /usr/local/share/rlwrap/rlgdb.txt  gdb"

--//这样能解决遇到的问题,历史记录文件~/.gdb_history也能记录打过的命令.

--// /usr/local/share/rlwrap/rlgdb.txt 的建立按照如下步骤:
--//在gdb下执行:
set logging file /tmp/rlgdb.log
set logging overwrite on
set logging enabled on
help all
quit

--//然后使用vim编辑/tmp/rlgdb.log文件。

--//执行如下:
:%s/ -- .*$//        --//删除 -- 到结尾.
:%s/, /^M/g          --//, 替换为回车.
--//保存退出

$ cat /tmp/rlgdb.log | tr ' ' '\n' | sort | uniq >| rlgdb.txt

--//然后适当编辑rlgdb.txt就可以,删除单个字符的命令。
--//然后执行:
# cp rlgdb.txt /usr/local/share/rlwrap/rlgdb.txt
# chown root:root /usr/local/share/rlwrap/rlgdb.txt

--//常用命令也可以调出,自己打过的命令记录在~/.gdb_history,方便下次执行时调出,ctrl+r也可以调出以前打过的命令.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3184446/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7968918