如何正确配置GDB以停止错误“;你可以';在没有调试过程的情况下,不要这样做;

如何正确配置GDB以停止错误“;你可以';在没有调试过程的情况下,不要这样做;,gdb,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美元/方案。 我可以在指定文件后在gdb中运行程序。权限为777(仅涵盖所有基础) 根

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美元/方案。 我可以在指定文件后在gdb中运行程序。权限为777(仅涵盖所有基础)

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

我仍然有同样的行为

我仍然有同样的行为

当然

您得到的错误意味着:您不能这样做,除非您正在调试一个实时进程

这将有助于:

(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.

您正在调试核心转储吗?您是否可以显示调用gdb的命令行,以及在调用
之前运行的所有相关gdb命令,而不是核心转储。一个可执行的C程序。(gdb)文件程序(gdb)在0x400994(gdb)处中断主断点1。在设置断点和“运行”后,我还可以使用“步骤”和“下一步”单步执行。“打电话”让我觉得很舒服。是的,这很管用。谢谢这是有道理的,现在我走出了杂草和隧道的愿景。我以为我可以调用一个函数,但经过思考,如果可能的话,中断点是什么。。。现在我明白了为什么有很多关于核心文件的论坛帖子都有这个错误。我有一个与此相关的问题。我正在用gdb调试
core dump
,并尝试执行
print errno
以获取错误代码。我得到了
如果没有调试过程,你就无法做到这一点。你能告诉我为什么不能打印
errno
?@St.Antario这是一个完全不同的问题。请问一个,它不会花你任何钱。