Hi Streamline team,
I'm trying to use Streamline to analyze a userspace program and a driver in the Linux kernel which is used by the userspace one.
I managed to get a capture with some of the functions I added to the Linux kernel but when I double click on the function it doesn't show anything in the code section (just empty table). When I attached my userspace program it worked fine and I could see the source code in the code section.
While creating the capture, I attached a debug vmlinux file as mentioned in "streamline/gator/README.md" file.
$ file vmlinux vmlinux: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), statically linked, BuildID[sha1]=4a2c0d4f1853fda4b1b6f86f2f68c0fb437ac585, with debug_info, not stripped
I'm analyzing a system running on Raspberry Pi 3 B+ with a custom Linux image based on Buildroot. I'm adding below some screenshots for my capture.
Note that the function "cv_neon_read" is part of the code I added to the linux kernel but when I double click on it, it doesn't show in code
Is there something I need to do to enabled the kernel code to be visible in the code section?
Thanks,KJ Yang
Please look Streamline user gudie Section D.2 https://developer.arm.com/documentation/101816/9-7/Troubleshooting-Streamline/Troubleshooting-missing-source-files?lang=en to setup path substitutions to replace the path that Streamline uses to find the source code.
Hi KJ Yang,
I'm Yahya from Streamline team.
Can you provide more details on the following:
zcat /proc/config.gz | grep CONFIG_DEBUG_INFO
Kind Regards,Yahya
The link you provided isn't working. If you mean the path substitution in the code view (the icon Yahya mentioned in the other reply), When I click on it I get an empty list shown below
Hello Yahya,
config.txt
https://developer.arm.com/documentation/101816/9-7/Troubleshooting-Streamline/Troubleshooting-missing-source-files
Thanks for the link. As mentioned above, the path substitution list is empty so I can't follow the steps mentioned in documentation
Thanks for the info you provided. The kernel configuration file you attached contains all the necessary configs.
I have another couple questions to ask:
readelf --debug-dump=info vmlinux | grep "Version:" | tail -n 1
Hi KJ,
Streamline tries to locate the path to your application's source by querying the DWARF debug information. If the path in the debug info is not accessible, you will need to provide a location for the source files using path substitution. Ronan has provided the link to the current version of the User Guide that shows how to do this.
You'll need to click the plus symbol "+" to create a new substitution rule.
Hi Yahya,
The issue you have reported has been confirmed to be a bug and we are currently working on fixing it.
As a work around, you can overcome the issue by disabling the beta C++ processing backend by doing the following:
Please let me know if you have any questions.
Thanks,Yahya
I tested your workaround and it's working. I can see the kernel code now.
Thanks a lot for your help