On 2016/01/06 12:32, Dave Anderson wrote: > > > ----- Original Message ----- >> On 2016/01/06 1:42, Dave Anderson wrote: >>> >>> >>> ----- Original Message ----- >>>> >>>> >>>> ----- Original Message ----- >>>>> Hi Dave, >>>>> >>>>> The attached files are extension module to dump log buffer of Intel >>>>> Processor Trace from vmcore. Please consider placing this in the >>>>> extensions page. >>>>> >>>>> [Overview of PT] >>>>> PT(Processor Trace) is a new feature of Intel CPU "Broadwell", it >>>>> captures information about program execution flow.[1] >>>>> >>>>> Once Intel PT is enabled, the events which change program flow, like >>>>> branch instructions, exceptions, interruptions, traps and so on are >>>>> logged in the memory. This is very useful for debugging because we can >>>>> know the detailed behavior of software. >>>>> >>>>> >>>>> [About extension] >>>>> This extension retrieves log buff of PT from vmcore and saves it as a >>>>> file. 'ptdump' command can be used once this extension is loaded. >>>>> >>>>> crash> extend extensions/ptdump.so >>>>> ./extensions/ptdump.so: shared object loaded >>>>> crash> ptdump output_dir >>>>> [0] buffer dump: dump.0 >>>>> [0] packet decode: decode.0 >>>>> [1] buffer dump: dump.1 >>>>> [1] packet decode: decode.1 >>>>> (snipped) >>>>> >>>>> In this case, output_dir directory is created, and then dump.N and >>>>> decode.N files are created in the directory for each cpus(N is cpu >>>>> number). >>>>> >>>>> dump.N: raw data of PT >>>>> decode.N: result of PT packet decoder >>>>> >>>>> dump.N is binary data and it is not human readable. decode.N is >>>>> generated by fastdecode[2], which is PT packet dumper created by Andi >>>>> Kleen. It's useful for checking what kinds of packets are included in >>>>> dump.N. I'll update extension using PT library(libipt[3]) to generate >>>>> more useful file for investigation. >>>>> >>>>> [Build extension] >>>>> To build the module from the top-level crash-<version> directory, enter: >>>>> >>>>> $ tar xvf ptdump-1.0.0.tar.gz >>>>> $ mv ptdump-1.0.0/* extensions >>>>> $ make extensions >>>>> >>>>> [1] https://software.intel.com/en-us/blogs/2013/09/18/processor-tracing >>>>> [2] https://github.com/andikleen/simple-pt >>>>> [3] https://github.com/01org/processor-trace >>>>> >>>>> Thanks, >>>>> Takao Indoh >>>> >>>> Hi Takao, >>>> >>>> I certainly can add this to the extensions subdirectory. However >>>> I do have a couple suggestions with respect to the build procedure: >>>> >>>> $ tar xvf $dl/ptdump-1.0.0.tar.gz >>>> ptdump-1.0.0/ >>>> ptdump-1.0.0/fastdecode.c >>>> ptdump-1.0.0/map.c >>>> ptdump-1.0.0/map.h >>>> ptdump-1.0.0/ptdump.c >>>> ptdump-1.0.0/ptdump.mk >>>> $ mv ptdump-1.0.0/* extensions >>>> $ make extensions >>>> gcc -Wall -g -nostartfiles -shared -rdynamic -o fastdecode.so >>>> fastdecode.c >>>> -fPIC -DX86_64 -DLZO -DSNAPPY -DGDB_7_6 >>>> gcc -DLZO -DSNAPPY -Wall -I.. -fPIC -DX86_64 -c -o ptdump.o ptdump.c >>>> gcc -DLZO -DSNAPPY -Wall -I.. -fPIC -DX86_64 -c -o fastdecode.o >>>> fastdecode.c >>>> gcc -DLZO -DSNAPPY -Wall -I.. -fPIC -DX86_64 -c -o map.o map.c >>>> gcc -Wall -g -shared -rdynamic -o map.so map.c -fPIC -DX86_64 -DLZO >>>> -DSNAPPY -DGDB_7_6 >>>> $ ls -ltr extensions/*.so >>>> -rwxrwxr-x 1 anderson anderson 17613 Jan 5 10:51 extensions/echo.so* >>>> -rwxrwxr-x 1 anderson anderson 851633 Jan 5 10:51 extensions/eppic.so* >>>> -rwxrwxr-x 1 anderson anderson 100465 Jan 5 10:51 extensions/trace.so* >>>> -rwxrwxr-x 1 anderson anderson 112373 Jan 5 10:51 >>>> extensions/dminfo.so* >>>> -rwxrwxr-x 1 anderson anderson 42358 Jan 5 10:51 extensions/snap.so* >>>> -rwxrwxr-x 1 anderson anderson 15539 Jan 5 10:57 >>>> extensions/fastdecode.so* >>>> -rwxrwxr-x 1 anderson anderson 21136 Jan 5 10:57 >>>> extensions/ptdump.so* >>>> -rwxrwxr-x 1 anderson anderson 14880 Jan 5 10:57 extensions/map.so* >>>> $ >>>> >>>> The build procedure shows the creation of the "map.so" and "fastdecode.so" >>>> shared objects, but does not show the creation of "ptdump.so", which is >>>> the >>>> only object that actually gets loaded into a crash session, correct? >>>> That build line gets hidden because of the "@if" clause: >>>> >>>> @if [ $(ARCH) = "UNSUPPORTED" ]; then \ >>>> echo "ptdump: architecture not supported"; \ >>>> else \ >>>> gcc $(CFLAGS) $(TARGET_CFLAGS) $(COMMON_CFLAGS) >>>> -nostartfiles >>>> -shared -rdynamic -o $@ $^ ; \ >>>> fi; >>>> >>>> Can you fix that so that a user can actually see the build of ptdump.so? >> >> Ok, I'll fix it. >> >> >>>> Also, unlike the other extension modules, the ptdump files and build >>>> procedure clutter up the extensions subdirectory. Since you do >>>> not have a single ptdump.mk and ptdump.c file, would it be possible >>>> for you to do the same kind of thing that the "eppic" module does, >>>> where there would be an extensions/ptdump.mk file, which would reference >>>> the sources in a "ptdump" subdirectory where all of the files can be >>>> cleanly kept in one place? >>>> >>>> Thanks, >>>> Dave >>> >>> >>> Hi Takao, >>> >>> Can you explain what fastdecode.so and map.so are used for? >>> >>> crash> extend ptdump.so >>> ./extensions/ptdump.so: shared object loaded >>> crash> extend fastdecode.so >>> extend: ./extensions/fastdecode.so: no commands registered: shared >>> object unloaded >>> crash> extend map.so >>> extend: ./extensions/map.so: no commands registered: shared object >>> unloaded >>> crash> >>> >>> I see fastdecode.o and map.o being included in the ptdump.so compile line, >>> but >>> don't see where fastdecode.so and map.so fit into the picture? >> >> fastdecode.so and map.so is not generated. Everything is included in >> ptdump.so. I mean, fastdecode.so and map.so was created by mistake. They are not needed. This bug is fixed in new version. >> >> I'll change ptdump.mk like this so that unnecessary *.o file is not >> generated. >> >> gcc -Wall -I. -fPIC -DX86_64 -nostartfiles -shared -rdynamic \ >> -o ptdump.so *.c >> >> >>> >>> In any case, to clarify my request again, after installation, there should >>> be >>> these files: >>> >>> extensions/ptdump.mk >>> extensions/ptdump/ptdump.c >>> extensions/ptdump/fastdecode.c >>> extensions/ptdump/map.c >>> extensions/ptdump/map.h >>> >>> And after the build: >>> >>> extensions/ptdump.so >>> >>> All of the other .o and .so files should only exist in the extensions/ptdump >>> subdirectory. >> >> I see, I'll fix them and post updated version soon. >> I have one question. >> >>> extensions/ptdump.mk >>> extensions/ptdump/ptdump.c >> >> ptdump.c should be also placed in extensions/ptdump? >> In the case of eppic, the files seems to be placed like this: >> >> extensions/eppic.mk >> extensions/eppic.c >> extensions/eppic/* >> >> Therefore if I should do in the same manner, the files should be like >> this? >> >> extensions/ptdump.mk >> extensions/ptdump.c >> extensions/ptdump/fastdecode.c >> extensions/ptdump/map.c >> extensions/ptdump/map.h > > The extensions/eppic.c file is only there so that the extensions/Makefile will initiate > the build of eppic.mk: > > $ cat extensions/eppic.c > /* > Place holder for proper working of the extension Makefile. > Eppic crash application file is in eppic/applications/crash/eppic.c > */ > $ > > But you can put your actual ptdump.c file in the extensions subdirectory if you'd like. I noticed that ptdump.so was not built if all *.c files are in extensions/ptdump directory. See extensions/Makefile for details. So, I place files like this. extensions/ptdump.mk extensions/ptdump.c extensions/ptdump/fastdecode.c extensions/ptdump/map.c extensions/ptdump/map.h I attach new version. Thanks, Takao Indoh
Attachment:
ptdump-1.0.0.tar.gz
Description: application/gzip
-- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility