如何跟踪vb源程序的代码

如何跟踪vb源程序的代码,第1张

1合理设置断点,可以单个设置,也可以设置多个,跟踪不同的变量或代码

2充分利用单步运行,小程序可以完全单步,断点后也行,或在二个断点间

3在代码中加入必要的调试信息处理模块,调试成功后再取消

4可以设置调试控件,动态实时反映变量值或程序流程,如文本框修改变量值,标签显示变量值

方法很多,也都只能是原则,就慢慢练吧

在上一篇文章的golang代码中,函数add的上一行,增加了一条注释语句: //go:noinline 。在bpftrace追踪时,是否可以去掉?有什么作用?

为了说明该问题,设计一个例子。

golang代码中,有两个求和函数。其中,add1加上 //go:noinline ,另一个add2不加。代码如下:

bpftrace程序分别对函数add1和add2的输入参数、返回值进行追踪,代码如下:

执行程序后,可以看到bpftrace程序能够正常追踪到函数add1,但是无法追踪到函数add2。

通过上文中的示例代码,可以看到,没有加 //go:noinline 的函数无法被bpftrace程序追踪到。通过查阅golang相关文档,可以知道, //go:noinline 表示该函数在编译时,不会被内联

使用 objump -S 生成golang程序的汇编代码如下:

通过汇编代码,我们可以看到,主函数中,地址 0x498e52 处 callq 498e00 调用了add1函数,地址 0x498ebb 处 movq $0x4,(%rsp) 直接计算求值。

因此,golang编译器在编译代码时,会对代码进行分析,并按照内联规则,将某些函数生成内联代码。一旦函数被内联,bpftrace将无法追踪到对应函数。也就是,上文中函数 add2 无法被追踪到。

针对golang程序中编译器内联的问题,可以通过禁止内联的方式来解决。禁止内联的方式有:

在实践中,可以通过 go build -gcflags="-m -m" 来查看,哪些函数会在编译时执行内联,如:

从输出中,可以看到:

关于golang编译器进行内联的场景,可以参考golang源码:>

苹果app请求追踪意思是用户开启权限后,苹果在其他公司拥有的app和网站中可以跟踪用户的活动,用户根据需要设置开启或关闭。关闭方法是:

1、首先打开手机后,点击桌面上边的设置应用。

2、跳转到设置界面,向下滑动。

3、在这些选项里边找到隐私,点击隐私进入。

4、在隐私界面后,点击上方的跟踪选项。

5、默认的App请求跟踪是开启状态。

6、点击允许App请求跟踪右边的按钮关闭即可。

以上就是关于如何跟踪vb源程序的代码全部的内容,包括:如何跟踪vb源程序的代码、bpftrace动态追踪golang应用-函数内联问题、苹果app请求追踪是干嘛的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9459364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存