使用非路径名在gdb中启动应用程序

时间:2016-08-15 15:14:34

标签: path gdb argv

我正在尝试在GDB中启动遗留应用程序,并且它要求argv[0]值不包含除字母数字字符以外的任何内容。

每当我在GDB中启动程序时,似乎它在运行程序之前将名称扩展为完整路径,因此我得到一个错误(因为它无法处理斜杠):

“无法找到/ home / user / myapp ...”

是否可以使用相对路径在GDB中运行程序,以便它只能看到“myapp”?

1 个答案:

答案 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