如何正确配置GDB以停止错误“;你可以';在没有调试过程的情况下,不要这样做;
Ubuntu 16.04.4 LTS,GNU gdb(Ubuntu 7.11.1-0ubuntu1~16.5)7.11.1 我试图在编译的C程序中调用函数,并获得以下结果:如何正确配置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(仅涵盖所有基础) 根
"(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这是一个完全不同的问题。请问一个,它不会花你任何钱。