副标题#e#
要试用 Linux 上的 ProcDump,你需要下载该工具并编译它。(我使用的是 Red Hat Enterprise Linux,尽管这些步骤在其他 Linux 发行版上应该是一样的):
$ cat/etc/redhat-release
RedHatEnterpriseLinux release 8.2(Ootpa)
$
$ uname-r
4.18.0-193.el8.x86_64
$
首先,克隆 Linux 版 ProcDump 的版本库。
$ gitclone https://github.com/microsoft/ProcDump-for-Linux.git
Cloning into 'ProcDump-for-Linux'…
remote:Enumerating objects:40,done.
remote:Counting objects:100%(40/40),done.
remote:Compressing objects:100%(33/33),done.
remote:Total414(delta 14), reused 14(delta 6), pack-reused 374
Receiving objects:100%(414/414),335.28KiB|265.00KiB/s,done.
Resolving deltas:100%(232/232),done.
$
$ cdProcDump-for-Linux/
$
$ ls
azure-pipelines.yml CONTRIBUTING.md docs INSTALL.md Makefile procdump.gif src
CODE_OF_CONDUCT.md dist include LICENSE procdump.1 README.md tests
$
接下来,使用 make 构建程序。它能准确地输出编译源文件所需的命令行参数。
$ make
rm-rf obj
rm-rf bin
rm-rf /root/ProcDump-for-Linux/pkgbuild
gcc-c -g -o obj/Logging.o src/Logging.c -Wall-I ./include-pthread -std=gnu99
gcc-c -g -o obj/Events.o src/Events.c -Wall-I ./include-pthread -std=gnu99
gcc-c -g -o obj/ProcDumpConfiguration.o src/ProcDumpConfiguration.c -Wall-I ./include-pthread -std=gnu99
#p#副标题#e#
gcc-c -g -o obj/Handle.o src/Handle.c -Wall-I ./include-pthread -std=gnu99
gcc-c -g -o obj/Process.o src/Process.c -Wall-I ./include-pthread -std=gnu99
gcc-c -g -o obj/Procdump.o src/Procdump.c -Wall-I ./include-pthread -std=gnu99
gcc-c -g -o obj/TriggerThreadProcs.o src/TriggerThreadProcs.c -Wall-I ./include-pthread -std=gnu99
gcc-c -g -o obj/CoreDumpWriter.o src/CoreDumpWriter.c -Wall-I ./include-pthread -std=gnu99
gcc-o bin/procdump obj/Logging.o obj/Events.o obj/ProcDumpConfiguration.o obj/Handle.o obj/Process.o obj/Procdump.o obj/TriggerThreadProcs.o obj/CoreDumpWriter.o -Wall-I ./include-pthread -std=gnu99
gcc-c -g -o obj/ProcDumpTestApplication.o tests/integration/ProcDumpTestApplication.c -Wall-I ./include-pthread -std=gnu99
gcc-o bin/ProcDumpTestApplication obj/ProcDumpTestApplication.o -Wall-I ./include-pthread -std=gnu99
$
编译过程中会创建两个新的目录。第一个是 obj/ 目录,存放编译期间创建的对象文件。第二个(也是更重要的)目录是 bin/,它是存储编译出的 procdump 程序的地方。它还会编译另一个名为 ProcDumpTestApplication 的测试二进制文件:
$ ls obj/
CoreDumpWriter.o Handle.o ProcDumpConfiguration.o ProcDumpTestApplication.o TriggerThreadProcs.o
Events.o Logging.o Procdump.o Process.o
$
$
$ ls bin/
procdump ProcDumpTestApplication
$
$ file bin/procdump
#p#副标题#e#
bin/procdump: ELF 64-bit LSB executable, x86-64, version 1(SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,for GNU/Linux3.2.0,BuildID[sha1]=6e8827db64835ea0d1f0941ac3ecff9ee8c06e6b,with debug_info,not stripped
$
$ file bin/ProcDumpTestApplication
bin/ProcDumpTestApplication: ELF 64-bit LSB executable, x86-64, version 1(SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,for GNU/Linux3.2.0,BuildID[sha1]=c8fd86f53c07df142e52518815b2573d1c690e4e,with debug_info,not stripped
$
在此情况下,每次运行 procdump 实用程序时,你都必须移动到 bin/ 文件夹中。要使它在系统中的任何地方都可以使用,运行 make install。这将这个二进制文件复制到通常的 bin/ 目录中,它是你的 shell $PATH 的一部分:
$ which procdump
/usr/bin/which:no procdump in(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
$
$ make install
mkdir-p //usr/bin
cp bin/procdump //usr/bin
mkdir-p //usr/share/man/man1
cp procdump.1//usr/share/man/man1
$
$ which procdump
/usr/bin/procdump
$
安装时,ProcDump 提供了一个手册页,你可以用 man procdump 访问: