我试图在GDB中启动遗留应用程序,并且它要求它的argv[0]
值不包含除字母数字字符以外的其他任何内容。使用非路径名在gdb中启动应用程序
每当我在GDB启动该程序似乎它扩展名运行程序之前是完整路径,所以我得到这样一个错误(因为它不能与斜线处理):
“找不到/ home/user/myapp ...”
是否可以在GDB中使用相对路径运行程序,以便它只会看到“myapp”?
我试图在GDB中启动遗留应用程序,并且它要求它的argv[0]
值不包含除字母数字字符以外的其他任何内容。使用非路径名在gdb中启动应用程序
每当我在GDB启动该程序似乎它扩展名运行程序之前是完整路径,所以我得到这样一个错误(因为它不能与斜线处理):
“找不到/ home/user/myapp ...”
是否可以在GDB中使用相对路径运行程序,以便它只会看到“myapp”?
GDB运行正常使用外壳命令行
exec program_pathnameprogram_arguments
目标命令,但它有一个set exec-wrapper
命令,将这个改变到
exec exec_wrapperprogram_pathnameprogram_arguments
的exec_wrapper是经常另一个命令,但它可以是exec
命令接受的任意字符串。
许多shell(bash,zsh,ksh93)支持命令的-a
选项来设置argv [0]。
所以,如果你的shell支持exec -a
,你可以做以下调用/home/user/myapp
用的argv [0] == myapp
:
(gdb) set exec-wrapper -a myapp
你有任何的['argv0'(HTTP:// manpages.ubuntu.com/manpages/xenial/en/man1/argv0.1.html)命令还是一个支持'exec'选项的shell? –
@MarkPlotnick不,和bash。对第二个人来说,这是否是肯定的? – soandos
@MarkPlotnick,对不起,是的,我有exec -a。问题是GDB正在启动,而不是脚本 – soandos