为什么我在GDB中尝试获取c语言程序的进程ID(pid)时返回null?

问题描述 投票:0回答:1

在Linux上,在

gdb
内,我试图在我的指定目录中找到这个C程序的PID。但是,当我尝试使用命令
(gdb) info inferior
时,我得到输出:

  Num  Description       Connection           Executable        
* 1    <null>                                 /home/(cut because it showed personal name) /debug/example

进程的PID应该在

* 1
旁边,但它只是返回null?我不明白为什么。

我知道命令

(gdb) print getpid()
也可以检索PID,但它输出:

No symbol "getpid" in current context.

有人可以帮忙解释一下发生了什么事吗?

c linux ubuntu gdb
1个回答
0
投票

没有信息,因为你可能还没有开始调试程序,并且没有子进程。

使用

start
开始调试。

$ gdb example
Reading symbols from example...
(gdb) info inferior
  Num  Description       Connection           Executable        
* 1    <null>                                 /path/to/example
(gdb) start
Temporary breakpoint 1 at 0x113d: file example.c, line 5.
Starting program: /path/to/example 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib64/libthread_db.so.1".

Temporary breakpoint 1, main () at example.c:5
5       puts("Hello world.");
(gdb) info inferior
  Num  Description       Connection           Executable        
* 1    process 28506     1 (native)           /path/to/example 
(gdb) 
© www.soinside.com 2019 - 2024. All rights reserved.