Power架构Linux环境中GDB启动外部进程异常问题求助
GDB执行外部交互式命令异常的解决方法(Power架构RHEL8环境)
问题根源
你遇到的这些异常,本质是GDB默认没有将子进程的标准IO绑定到当前终端:
less/vim这类交互式工具无法识别终端环境,只能以非交互模式输出内容或抛出终端警告- 后台启动的
xterm属于GDB的子进程组,退出GDB时会因进程组关联导致卡住,且会随GDB终止
具体解决办法
修复交互式工具(less/vim)的终端问题
- 先在shell中执行
tty获取当前终端路径,比如输出/dev/pts/0 - 进入GDB后执行:
set inferior-tty /dev/pts/0 - 之后再执行
!less some_file.txt或!vim some_file.txt,工具就能正常进入交互模式,不会再出现异常。
- 先在shell中执行
解决xterm后台启动后GDB退出卡住的问题
- 启动xterm时使用
setsid让它脱离GDB的进程组:!setsid xterm & - 这样xterm会成为新会话的独立进程,退出GDB时不会卡住,且xterm不会随GDB关闭。
- 启动xterm时使用
永久配置(可选)
- 编辑
~/.gdbinit文件,添加以下内容(每次打开新终端后可能需要更新终端路径,或者进入GDB后手动执行一次tty再设置):shell tty > /tmp/current_tty set inferior-tty `cat /tmp/current_tty` - 这样每次启动GDB时会自动绑定当前终端,无需手动输入。
- 编辑
补充说明
你使用的GDB版本(GNU gdb Red Hat Enterprise Linux 8.2-19.el8)在子进程终端关联上默认没有自动配置,所以需要手动指定终端设备来让交互式工具正常工作。
内容的提问来源于stack exchange,提问作者John Demetros
相关产品推荐
相关产品推荐

