我試圖在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