Farhan Khan
2018-08-06 01:31:40 UTC
Hi all,
Is there a way to go from a memory address to a kernel symbol?
I am working with a subsystem that uses a lot of function pointers,
and I am not certain which particular function is being called. I have
dtrace(1) printing out the memory address of the function, like this:
printf("Runs vap->iv_newstate: 0x%p", vap->iv_newstate);
The resulting memory address will be 0xffffffff834fa6d0. I was told I
can use addr2line(1), but it seems to fail, as follows:
# addr2line -e /usr/obj/usr/src/amd64.amd64/sys/GENERIC/kernel.full
ffffffff834fa6d0
??:0
Am I doing something wrong? Also, if I can do this directly in
dtrace(1), that would be much much better. This is definitely the
installed kernel, so there is no kernel mismatch. I have also tried
using kernel.debug and kernel, same result.
Thank you,
--
Farhan Khan
PGP Fingerprint: B28D 2726 E2BC A97E 3854 5ABE 9A9F 00BC D525 16EE
Is there a way to go from a memory address to a kernel symbol?
I am working with a subsystem that uses a lot of function pointers,
and I am not certain which particular function is being called. I have
dtrace(1) printing out the memory address of the function, like this:
printf("Runs vap->iv_newstate: 0x%p", vap->iv_newstate);
The resulting memory address will be 0xffffffff834fa6d0. I was told I
can use addr2line(1), but it seems to fail, as follows:
# addr2line -e /usr/obj/usr/src/amd64.amd64/sys/GENERIC/kernel.full
ffffffff834fa6d0
??:0
Am I doing something wrong? Also, if I can do this directly in
dtrace(1), that would be much much better. This is definitely the
installed kernel, so there is no kernel mismatch. I have also tried
using kernel.debug and kernel, same result.
Thank you,
--
Farhan Khan
PGP Fingerprint: B28D 2726 E2BC A97E 3854 5ABE 9A9F 00BC D525 16EE