gperftools cpuProfiler cannot see the simbols when profiling a file created by and ARM device

I want to profile a C++ application that runs in an ARM device. I ran my app and I profiled it using ProfilerStart("googleProfBL.prof"), so the file is generated. When I open the file from the ARM device in my local computer I get this:

./pprof --text --add_lib=libraryIwanttoDebug.so BinaryThatLoadsThatLibrary googleProfBL.prof Using local file /home/genius/PresControler/src-build-target/deploy/NavStartup. Using local file ../traces/googleProfBL.prof. Warning: address ffffffffffffffff is longer than address length 8 Warning: address ffffffffffffffff is longer than address length 8 Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Total: 5347 samples 258 4.8% 4.8% 258 4.8% 0x76d4c276 144 2.7% 7.5% 144 2.7% 0x76da2cc4 126 2.4% 9.9% 126 2.4% 0x5d0f8284 114 2.1% 12.0% 114 2.1% 0x76d27386 64 1.2% 13.2% 64 1.2% 0x76dba2dc 53 1.0% 14.2% 53 1.0% 0x76dba1f4 ...

The so library is compiled in debug mode (is not stripped), I do not know why I am not getting the symbols.

I tried this:

./pprof --text --add_lib=aFileOfTheLibrary.o BinaryThatLoadsThatLibrary googleProfBL.prof Looks like I got a couple of symbols. Using local file /home/genius/PresControler/src-build-target/deploy/NavStartup. Using local file ../traces/googleProfBL.prof. Warning: address ffffffffffffffff is longer than address length 8 Warning: address ffffffffffffffff is longer than address length 8 Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Total: 5347 samples 258 4.8% 4.8% 258 4.8% 0x76d4c276 144 2.7% 7.5% 144 2.7% 0x76da2cc4 126 2.4% 9.9% 126 2.4% 0x5d0f8284 114 2.1% 12.0% 114 2.1% 0x76d27386 64 1.2% 13.2% 64 1.2% 0x76dba2dc 53 1.0% 14.2% 53 1.0% 0x76dba1f4 50 0.9% 15.1% 50 0.9% 0x76dbf1bc 34 0.6% 15.8% 34 0.6% 0x72eae1b4 30 0.6% 16.3% 30 0.6% 0x76d8a32a 30 0.6% 16.9% 30 0.6% 0x76d8e2c0 .. 0 0.0% 100.0% 7 0.1% std::forward_as_tuple <- I couldn't see that before!!! I tried doing --add_lib for every .o I have but I do not get any more symbols. Why I do not get the symbols, does it have anything to do because I am checking the results using an intel and getting them using an ARM?? How could I fix that? any help??? Thank you!!!

Upvotes: 2

Views: 1343

Answers (1)

I got much more information now! I was living my application pressing ctrl+c, so the file got somehow corrupt... I did a test calling ProfilerStop() before pressing ctrl+c and it worked (of course using as well --lib_prefix where the .so are). I still got these warnings: Warning: address ffffffffffffffff is longer than address length 8 Warning: address ffffffffffffffff is longer than address length 8 Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. If someone knows why I am getting them (I assume is because I am debugging code generated by another device) please let me know.

Upvotes: 1

Related Questions