gpt4 book ai didi

gdb - gdb:如何列出打开的文件

转载 作者:行者123 更新时间:2023-12-03 14:41:08 72 4
gpt4 key购买 nike

我想知道是否有可能从GDB本身获取已调试应用程序已打开但未关闭的文件/目录的列表?

当前,我设置了一个断点,然后使用lsof这样的外部程序来检查打开的文件。

但是这种方法确实很烦人。

环境:Debian-Lenny与gdb v6.8

编辑:我问,因为我的应用程序在某些情况下泄漏文件句柄

最佳答案

在Linux上,您也可以只查看/proc/<pid>/fd。从GDB做到这一点(例如,如果您要将其附加到断点)非常简单。或者当然也可以使用lsof。

(gdb) info proc
process 5262
cmdline = '/bin/ls'
cwd = '/afs/acm.uiuc.edu/user/njriley'
exe = '/bin/ls'
(gdb) shell ls -l /proc/5262/fd
total 0
lrwx------ 1 njriley users 64 Feb 9 12:45 0 -> /dev/pts/14
lrwx------ 1 njriley users 64 Feb 9 12:45 1 -> /dev/pts/14
lrwx------ 1 njriley users 64 Feb 9 12:45 2 -> /dev/pts/14
lr-x------ 1 njriley users 64 Feb 9 12:45 3 -> pipe:[62083274]
l-wx------ 1 njriley users 64 Feb 9 12:45 4 -> pipe:[62083274]
lr-x------ 1 njriley users 64 Feb 9 12:45 5 -> /bin/ls
(gdb) shell lsof -p 5262
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
ls 5262 njriley cwd DIR 0,18 14336 262358 /afs/acm.uiuc.edu/user/njriley
ls 5262 njriley rtd DIR 8,5 4096 2 /
ls 5262 njriley txt REG 8,5 92312 8255 /bin/ls
ls 5262 njriley mem REG 8,5 14744 441594 /lib/libattr.so.1.1.0
ls 5262 njriley mem REG 8,5 9680 450321 /lib/i686/cmov/libdl-2.7.so
ls 5262 njriley mem REG 8,5 116414 450307 /lib/i686/cmov/libpthread-2.7.so
ls 5262 njriley mem REG 8,5 1413540 450331 /lib/i686/cmov/libc-2.7.so
ls 5262 njriley mem REG 8,5 24800 441511 /lib/libacl.so.1.1.0
ls 5262 njriley mem REG 8,5 95964 441580 /lib/libselinux.so.1
ls 5262 njriley mem REG 8,5 30624 450337 /lib/i686/cmov/librt-2.7.so
ls 5262 njriley mem REG 8,5 113248 441966 /lib/ld-2.7.so
ls 5262 njriley 0u CHR 136,14 16 /dev/pts/14
ls 5262 njriley 1u CHR 136,14 16 /dev/pts/14
ls 5262 njriley 2u CHR 136,14 16 /dev/pts/14
ls 5262 njriley 3r FIFO 0,6 62083274 pipe
ls 5262 njriley 4w FIFO 0,6 62083274 pipe
ls 5262 njriley 5r REG 8,5 92312 8255 /bin/ls

关于gdb - gdb:如何列出打开的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231460/

72 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com