LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

基于Trace32查看Linux进程栈调用关系

1. 打开进程列表

点击菜单Linux->Display Process,即可查看所有进程列表。

2. 加载的可执行文件和库文件符号表

在感兴趣进程,右击选择:

  • Display Stack Frame:最开始Stack都是由一串地址组成的。
  • Display maps:提供了地址范围和可执行文件/库文件对应关系。

由以上两者可知需要加载哪些可执行文件和库文件。

点击Linux->Process Debugging->Load Symbols选择合适的可执行文件。点击Linux->Library Debugging->Load Symbols,填写Process name并选择合适的库文件。需要注意:

  • 可执行文件名称需要和Process name一致。对于软链接到busybox的可执行文件,需要将busybox拷贝重命名
  • 尽量选用"with debug_info, not stripped"的文件。可以通过file命令确认。

3. 重新加载内核符号表

对于内核符号表加载,需要进行SpaceID的重映射:

data.load.elf ../vmlinux <PID>:0x0 /NoCODE /NoClear /StripPART <Replace path>

注意PID需要将PID号使用十六进制表示0xXX

在将可执行文件、库文件、vmlinux都加载成功后,进程的栈显示了全部符号表。

 

posted on 2023-12-02 23:59  ArnoldLu  阅读(262)  评论(0编辑  收藏  举报

导航