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