pldd(1)

๐Ÿ’– pldd โ€” display dynamic shared objects linked into a process ๐Ÿ’–

okay bestie, gather round, because this little tool pldd is from the General Commands Manual and it is genuinely such a useful vibe. It's a command, it lives in section 1, and it does exactly one thing but it does it beautifully. Let's get into it ๐Ÿซถ


โœจ NAME โœจ

pldd โ€” display dynamic shared objects linked into a process

like... that's the whole job. it shows you the DSOs chillin' inside a process. iconic.


๐ŸŒธ SYNOPSIS ๐ŸŒธ

pldd pid
pldd option

that's it. no notes. two ways to call it, that's the whole menu ๐Ÿ’…


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

So the tea is: pldd prints out a list of the dynamic shared objects (DSOs, yes that's the acronym, we love an acronym) that are linked into the process you point at with a specific process ID (PID).

And listen โ€” this list is thorough. It doesn't just show you the stuff linked at startup, oh no. It also includes the libraries that have been dynamically loaded using dlopen(3) โœจ. So the sneaky runtime-loaded ones? Yeah, they're in there too. You get the full picture, no gatekeeping.


๐Ÿ‘‘ OPTIONS ๐Ÿ‘‘

  • --help, -? โ€” shows you a help message and then dips. bye ๐Ÿ‘‹
  • --usage โ€” shows a short usage message and exits. like help but lowkey on a diet.
  • --version, -V โ€” shows the program version info and exits. so you know exactly what you're working with ๐Ÿ’œ

๐Ÿ’€ EXIT STATUS ๐Ÿ’€

pay attention bestie, this part matters:

  • 0 โ€” success, we ate, no crumbs
  • 1 โ€” the process you named doesn't exist, OR you don't have permission to access its dynamic shared object list, OR you supplied no command-line arguments at all. any of those three and it's a 1, straight up.
  • 64 โ€” you gave it an invalid option. that's a 64. oops ๐Ÿ™ˆ

โญ VERSIONS โญ

some other systems have a similar command. so if you're hopping between platforms, mind the vibe check, it's not identical everywhere.


๐ŸŒˆ STANDARDS ๐ŸŒˆ

None. that's the whole section. nothing. zero. we're unstandardized and unbothered ๐Ÿคทโ€โ™€๏ธ


๐Ÿ’œ HISTORY ๐Ÿ’œ

glibc 2.15. that's where it was born. mark the calendar ๐ŸŽ€


๐Ÿงš NOTES ๐Ÿงš

ok so there's more than one way to get this info, and the manpage wants you to know:

the command

lsof -p PID

also shows output that includes the dynamic shared objects that are linked into a process. (not exactly the same output, but you can see the DSOs in there ๐Ÿ‘€)

And also โ€” gdb(1) has an info shared command that shows the shared libraries being used by a process. So you can get output similar to pldd using a command like the following one, which monitors the process with the specified pid:

$ gdb -ex "set confirm off" \
      -ex "set height 0" \
      -ex "info shared" \
      -ex "quit" \
      -p $pid \
| grep '^0x.*0x';

like, that's a whole pipeline, but it works ๐Ÿ’…


๐Ÿ˜ญ BUGS ๐Ÿ˜ญ

no because this is genuinely tragic: from glibc 2.19 to glibc 2.29, pldd was broken โ€” it just hung when you executed it. nothing happened. forever. the audacity ๐Ÿ’€

It got fixed in glibc 2.30, and the fix has been backported to earlier glibc versions in some distributions. so depending on your distro you might already be saved. prayers up ๐Ÿซถ


๐Ÿ”ฅ EXAMPLES ๐Ÿ”ฅ

here's the iconic demo, live:

$ echo $$;               # Display PID of shell
1143
$ pldd $$;               # Display DSOs linked into the shell
1143:   /usr/bin/bash
linux-vdso.so.1
/lib64/libtinfo.so.5
/lib64/libdl.so.2
/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2
/lib64/libnss_files.so.2

see how $$ gives you the shell's own PID and then you just hand that straight to pldd? chef's kiss. the DSOs just come tumbling out โœจ


๐Ÿ“ SEE ALSO ๐Ÿ“


and that's the whole page bestie!! ๐ŸŽ€ This particular copy of pldd(1) comes from Linux man-pages 6.20, dated 2026-02-08 โ€” so if you're reading this version, that's who to thank. now go inspect some processes, you're literally the main character of debugging ๐Ÿ’…๐Ÿ’–

๐Ÿ“ฆ where this page comes from
  • arch rolling: man-pages 6.20-1 ยท BSD-2-Clause AND BSD-3-Clause AND BSD-4.3TAHOE AND BSD-4-Clause-UC AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-linking-exception AND LGPL-3.0-or-later AND LicenseRef-Public-Domain AND LicenseRef-UltraPermissive AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-2-para AND Linux-man-pages-copyleft-var AND MIT AND Spencer-94
  • nixpkgs unstable: man-pages 6.20
  • ๐Ÿ“œ the page's license: Linux-man-pages-copyleft
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms