跟踪程序执行并UML序列图显示

如果要了解程序是怎样执行的,函数什么时候被调用到的,我们就必须一个个函数的打断点,进行跟踪。这是一个非常麻烦的过程。了解程序的执行,对程序员来说是很常见的事情, 比如:

如果我们想深入的掌握Android系统的某个类,看代码肯定是不可以少的,同时跟踪执行过程对掌握代码肯定很有帮助。但是要跟踪执行过程,往往需要先通读代码,然后再对应的地方打断点跟踪。能否先对整个类打断点,先整个类的了解程序的执行过程,然后再去详细的读代码呢?

另外在很多公司,文档是缺少的,代码是没什么注释的,程序结构也比较糟糕。当一个员工要接手别人代码,看代码经常看的云里雾里的。如果此时能自动生成执行过程的UML序列图,学习代码过程肯定就不会那么痛苦了。

QTrace可以很好的解决这些痛点。QTrace可以按类跟踪程序的执行,然后生成UML序列图,同时在UML序列图中还可以显示函数入参,this等变量信息。

如下是QTraceUML对Activity类进行跟踪并显示UML序列图的动画:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KcUyWWQ7-1596078302940)(https://s1.ax1x.com/2020/07/17/UsrhTI.gif)]

1.按类显示函数执行的UML序列图

1).运行->调试进程,选择要调试的程序进程

2).在设备面板,搜索并选择要跟踪的类; 执行右键菜单“序列图跟踪”

跟踪程序执行并UML序列图显示

3).当这个类有函数调用,就会显示到UML序列图中。

如下是Activity的UML序列图跟踪。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H8rXnl6N-1596078302950)(https://i.loli.net/2020/07/16/9C4n28dcDtux6Qa.png)]

4).注意,这里的UML图并不是图片,而是一个网页,点击函数,可以弹出对应的菜单,进行拷贝,跳到代码,设置断点等操作。同时也可以进行搜索操作。

跟踪程序执行并UML序列图显示

2.UML序列图中显示当前函数的变量信息

1).在“序列图跟踪”跟踪设置页面,选择“表达式”, 同时填写表达式为{locals}

{locals}会记录函数的入参,this变量等信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cYTBCtkB-1596078302954)(https://i.loli.net/2020/07/16/pu4XLA6sEClVUeK.png)]

2).在UML序列图结果窗口,点击对应的函数,然后点击菜单“表达式结果”, 会显示离线变量,离线变量包括函数的参数,this变量,局部变量等信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n6o1DZjd-1596078302958)(https://i.loli.net/2020/07/17/moaC2l8LHU7J46W.png)]