如何正确配置GDB,以停止错误“如果没有要调试的进程,则无法执行此操作”

时间:2018-04-06 15:23:25

标签: gdb

Ubuntu 16.04.4 LTS,GNU gdb(Ubuntu 7.11.1-0ubuntu1~16.5)7.11.1

我正在尝试在已编译的C程序中调用函数并获得以下内容:

"(gdb) call getVarName(someParam)
 You can't do that without a process to debug."

没有其他代码或消息。

我可以从shell提示符运行程序 jef @ ubuntu $ ./program。 我可以在指定文件后在gdb中运行程序。权限是777(仅涵盖所有基础)。

基于研究,我将SHELL设置为“export SHELL = / bin / bash” 和 在/etc/sysctl.d/10-ptrace.conf中设置kernal.yama.ptrace_scope = 0

我仍然有同样的行为。

1 个答案:

答案 0 :(得分:2)

  

我仍然有同样的行为。

自然。

您获得的错误意味着:您无法执行此操作,除非您正在调试实时流程。

这将有效:

(gdb) break main
(gdb) run
... GDB is now stopped, *and* you have a live process.
... you *can* call getVarName(...) now
(gdb) call getVarName(...)

(gdb) continue  # causes the process to run to end and exit
[Inferior 1 (process 195969) exited normally]

(gdb)  # Now you no longer have a live process, so you *again* can't
       # call functions in it.