gdb:如何列出打开的文件

2024-01-27

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

目前我设置了一个断点,然后使用外部程序,例如lsof检查打开的文件。

但这种做法确实很烦人。

环境:Debian-Lenny 和 gdb v6.8

EDIT:我这么问是因为我的应用程序在某些情况下会泄漏文件句柄


在 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gdb:如何列出打开的文件 的相关文章

随机推荐

  • 如何使用 Google 云端硬盘 API 密钥从 Android 应用程序访问云端硬盘内容?

    我无法访问 Google 云端硬盘 我在 Google API 控制台中创建了一个 API KEY 并启用了 Google Drive API 和 SDK 我在代码中的哪里设置 API KEY 驱动器生成器没有setJsonHttpRequ
  • cassandra中的主键是唯一的吗?

    这可能有点蹩脚 但在 cassandra 中主键是唯一的吗 例如下表中 CREATE TABLE users name text surname text age int adress text PRIMARY KEY name surna
  • .Net core 中 Json() 的小写属性名称

    有类 ClientViewModel public class Result public long PKID get set public string Name get set 并有 post 方法返回此模型 HttpPost publ
  • 如何让一个函数每 10 分钟在服务中运行一次?

    我有一个正在运行的 Windows 服务 在其中我想每隔几分钟运行一个函数 我找到了一些代码 但它似乎不起作用 我有一个记录器 它似乎没有进入过timer Elapsed 函数 protected override void OnStart
  • 阻止加载混合活动内容

    我在控制台中收到这些警告 但我的脚本无法正常工作 阻止加载混合活动内容 http code jquery com ui 1 10 3 themes smoothness jquery ui css http code jquery com
  • 如何获取 Flutter App 的编译/构建日期?

    我知道如何使用获取版本包信息 https pub dartlang org packages package info 但是如何在 ios 和 android 上获取运行时的构建时间戳 您可以使用构建 shell 脚本来创建 更新 Dart
  • 从 SetUpFixture 将参数传递给 TestFixture OneTimeSetUp

    我目前正在使用 C 构建一个自动化项目 nunit和 Selenium 我试图有一个安装类 它将在任何之前初始化 selenium webdriverTestFixture将运行并在所有这些都结束后尝试从TestFixture每一个Test
  • 无法理解 freeCodeCamp 中的 JS 递归倒计时函数

    所以 我已经明白了ideaJavaScript 中的递归 有一个功能是loops itself直到达到base条件 此时它停止并且返回最终结果 但是当我将其应用于尝试将其应用于的实际语法时 我有点头疼创建数组 让我们使用freeCodeCa
  • 更改 ApacheDS 中的默认管理员密码

    我是 ApacheDS 新手 我正在使用 apacheds 2 0 0 M17 管理员的默认密码是秘密的 有谁知道我可以在哪里将值更改为其他值 Inside apacheds instances default conf config ld
  • 找不到为 MVC 5 DropDownListFor 添加占位符的方法

    我尝试在网络上搜索并用我的代码尝试不同的东西 我知道如何为文本框添加占位符 但是为 MVC 5 下拉列表添加一个占位符怎么样 我有以下代码 但不会将占位符放入下拉列表中 Html DropDownListFor model gt model
  • Constexpr 类:继承?

    首先 我正在使用 Clang 3 4 1 我正在编写一个全局变量 它必须充当编译时上下文的占位符 主要作为值模板参数 为此 我编写了一个名为的 constexpr 类chameleon 它模仿任何运行时值的行为 struct chamele
  • c++11 及更高版本中 mutex.lock() 和 .unlock() 的确切线程间重新排序约束是什么?

    根据https en cppreference com w cpp atomic memory order https en cppreference com w cpp atomic memory order mutex lock and
  • 帮助菜单缺失部分 - Eclipse Luna

    我正在 Eclipse Luna 中工作 安装 Oracle Enterprise Pack for Eclipse OEPE 后 帮助菜单显示缺少项目 我附上屏幕截图 丢失物品 另外 我检查了菜单可见性 检查更新 安装新软件 安装细节 等
  • mypy 设置字典键/接口

    假设我有一个以字典作为参数的函数 def f d dict gt None x d x print x 我可以指定这本词典吗must有钥匙 x 到我的 我正在寻找类似的东西打字稿的界面 https www typescriptlang or
  • 如何在 Eclipse CDT 中配置特定的 GCC 交叉工具链?

    我导入了一些源代码C Makefile Project到 Eclipse CDT 工作区 并指定Cross GCC 索引器设置 工具链 项目导入进展顺利 但包含路径设置仅指向我当前的本机主机 GCC 实现 我一直在寻找Toolchain E
  • JavaScript:如何将额外参数传递给回调[重复]

    这个问题在这里已经有答案了 我有一个问题困扰了我一段时间 假设我有以下数组 var array 1 2 3 现在我有一个与此类似的功能 function print num str console log str num 是否可以调用 fo
  • Net Core 2.1 通用主机即服务

    我正在尝试使用最新的 Dotnet Core 2 1 运行时构建 Windows 服务 我不托管任何 aspnet 我不希望或不需要它来响应 http 请求 我遵循了示例中的代码 https github com aspnet Docs t
  • 我可以在 ARView 中使用缩放功能吗?

    我希望我的用户在 AR 应用程序中使用缩放 可以使用 ARView 进行缩放吗 我编写了以下代码并将其添加到点击操作中 let discoverySession AVCaptureDevice DiscoverySession device
  • 如何在 R 中使用 `tryCatch` 正确记录警告和错误?

    我有一个函数fun通常会产生警告 偶尔会引发错误 我正在尝试使用tryCatch记录警告和错误 如建议的那样这个答案 https stackoverflow com a 57658252 5252007 如何同时存储警告和错误 这是一个最小
  • gdb:如何列出打开的文件

    我想知道是否有可能获得调试应用程序已打开但未从 GDB 本身关闭的文件 目录列表 目前我设置了一个断点 然后使用外部程序 例如lsof检查打开的文件 但这种做法确实很烦人 环境 Debian Lenny 和 gdb v6 8 EDIT 我这