[20240922]gdb与rlwrap使用问题.txt
--//我使用centos 7.3版本遇到的问题,gdb与rlwrap无法配合使用,一些按键失效。
--//我定义别名如下:
$ alias rlgdb
alias rlgdb='$RLWRAP -s 9999 -c -r -i /usr/bin/gdb'
--//我仔细查看发现gdb实际上链接了readline库。
$ ldd $(which gdb)
linux-vdso.so.1 => (0x00007ffd6679d000)
libreadline.so.6 => /lib64/libreadline.so.6 (0x00007f0a3e767000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f0a3e53f000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f0a3e318000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f0a3e0ee000)
libz.so.1 => /lib64/libz.so.1 (0x00007f0a3ded7000)
libm.so.6 => /lib64/libm.so.6 (0x00007f0a3dbd5000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f0a3d9d1000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0a3d7b4000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f0a3d5b1000)
libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f0a3d1e6000)
libexpat.so.1 => /u01/app/oracle/product/21.0.0/dbhome_1/lib/libexpat.so.1 (0x00007f0a3cfbb000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f0a3cd95000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f0a3cb7f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0a3c7bd000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f0a3c55c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0a3e9d6000)
--//好像旧版本不包括readline库,这样导致它与rlwrap配合无效。
$ cat ~/.gdb_history
y
n
y
--//文件.gdb_history就仅仅记录3行,实际上如果我没有输入n,仅仅记录1行,如果上1个命令与下一个相同,rlwrap仅仅记录1行。
--//不像.sqlplus_history记录许多打入的历史命令。
--//导致许多按键"失效",不知道像这类情况rlwrap有什么好的方法解决。
--//我尝试在如下目录建立gdb文件。
# ls -l /usr/share/rlwrap/completions/gdb
-rw-r--r--. 1 root root 1500 2024-09-22 16:38:49 /usr/share/rlwrap/completions/gdb
# grep ^b /usr/share/rlwrap/completions/gdb
backtrace
bookmark
break
break-range
bt
--//这样我打入的命令,输入前几个字符,按<F8>可以直接调出。因为保存失效,历史记录.gdb_history没有记录,即使我尝试加入历史
--//记录文件,按<F8>一样无效。
--//注:<F8>定义在/etc/inputrc文件。
# grep -i 'f8' /etc/inputrc
"\e[19~": history-search-backward # F8
--//实际上出现这样情况,还不如没有以前的情况好用,指gdb不包括readline库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3029349/ ,如需转载,请注明出处,否则将追究法律责任。