使用非路径名在 gdb 中启动应用程序
Launch application in gdb with non-path name
我正在尝试在 GDB 中启动遗留应用程序,它要求它的 argv[0]
值不包含字母数字字符以外的任何字符。
每当我在 GDB 中启动该程序时,它似乎都会将名称扩展为 运行 程序之前的完整路径,所以我得到一个错误(因为它无法处理斜杠):
"Cannot find /home/user/myapp ..."
是否可以 运行 GDB 中的程序使用相对路径,以便它只会看到 "myapp"?
Gdb 通常使用shell命令行运行目标命令
exec program_pathname program_arguments
但是它有一个 set exec-wrapper
命令可以将其更改为
exec exec_wrapper program_pathname program_arguments
exec_wrapper通常是另一个命令,但它可以是exec
命令接受的选项。
许多 shells(bash、zsh、ksh93)支持 exec
命令的 -a
选项来设置 argv[0]。
因此,如果您的 shell 支持 exec -a
,您可以执行以下操作以使用 argv[0]==myapp
调用 /home/user/myapp
:
(gdb) set exec-wrapper -a myapp
我正在尝试在 GDB 中启动遗留应用程序,它要求它的 argv[0]
值不包含字母数字字符以外的任何字符。
每当我在 GDB 中启动该程序时,它似乎都会将名称扩展为 运行 程序之前的完整路径,所以我得到一个错误(因为它无法处理斜杠):
"Cannot find /home/user/myapp ..."
是否可以 运行 GDB 中的程序使用相对路径,以便它只会看到 "myapp"?
Gdb 通常使用shell命令行运行目标命令
exec program_pathname program_arguments
但是它有一个 set exec-wrapper
命令可以将其更改为
exec exec_wrapper program_pathname program_arguments
exec_wrapper通常是另一个命令,但它可以是exec
命令接受的选项。
许多 shells(bash、zsh、ksh93)支持 exec
命令的 -a
选项来设置 argv[0]。
因此,如果您的 shell 支持 exec -a
,您可以执行以下操作以使用 argv[0]==myapp
调用 /home/user/myapp
:
(gdb) set exec-wrapper -a myapp