使用 gdb 调试使用 startx 启动的应用程序

using gdb to debug application started using startx

我有一个带有 GUI 的应用程序,我在命令行上 运行 直接在 X 服务器中,没有使用 windows 管理器:

sudo startx app args 

我正在尝试调试应用程序并想使用 gdb。如何在 gdb 中启动应用程序?我已经试过了,但它不起作用:

sudo gdb --args startx app args 

I've tried this but it doesn't work

它不起作用,因为 startx 是一个 shell 脚本:

$ file /usr/bin/startx
/usr/bin/startx: POSIX shell script, ASCII text executable

您几乎肯定不想使用 GDB 调试 shell 脚本。

您可能想要的是正常启动应用程序,然后附加 GDB 到它:

sudo startx app args
sudo gdb -p $(pgrep app)

另请注意,从运行应用程序的同一显示器调试应用程序是不明智的:如果您在应用程序已 grabbed X 服务器的上下文中设置断点, 那么你所有的击键都会转到应用程序, 将无法继续应用程序。