MonkeyDev编写tweak插件-反向调试问题

使用MonkeyDev针对目标app编写了tweak插件,插件里hook了某个oc类的方法A
当app跑起来之后,附加上调试,继续在方法A上下了一个断点,当程序跑到方法A处时,断点断住,提示如下:

咋看到是我编写的tweak代码源码啊,连写的注释都能看到,这是咋回事?是插件有什么符号需要干掉吗? 有懂的大佬提示一下啊

需要改arg1参数的值 然后再丢给原方法执行哦 %orig(arg1);

这跟前后没关系吧 本质上还是想调试的时候 看到的是汇编代码 而不是像现在这样看到文件的源码内容了

估计是你编译安装插件时,用的是默认的debug模式 -》所以带调试符号和源码
去改为release的编译,应该就没调试符号了(除非你故意设置release时也带调试符号)

我发现这个问题的时候就是release模式的 ”除非你故意设置release时也带调试符号“ 这个在哪儿设置的?

啥模式都不管用,就是调试器发现是你的代码,让你更方便看

那别人拿到我这个插件 也能看到这样?

我就想问 别人拿到我这个插件 能不能看到这样的情况?

默认情况下release编译调试符号在.dSYM里面吧,换台电脑没这个包就没符号了

不能

先说结论:
正常情况下(你发布插件是release模式发布的),别人是无法看到你这里的符号(原代码和注释的)

因为:
如果是release模式,默认是会加很多优化==去掉debug调试模式时的很多内容,包括:

”除非你故意设置release时也带调试符号“ 这个在哪儿设置的?

Xcode->Target->Build SettingsOptimization levelrelease:默认是-Os == Fastest, Smallest,我当时故意为了调试,而改为:None

→ 使得Release时也带上debug信息,方便我调试插件。

1 个赞