断点

Xcode 调试技巧

强颜欢笑 提交于 2020-03-02 12:38:17
随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器。它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。LLDB为Xcode提供了底层调试环境,其中包括内嵌在Xcode IDE中的位于调试区域的控制面板,在这里我们可以直接调用LLDB命令 目录 一、 必备篇 • 打印变量 • 查看线程状态 • 获取线程的跟踪栈 • 列出帧参数和本地变量 • 寻址 • 帮助系统 二、 技巧篇 • 运行时修改变量的值 • 异常排查 • 符号断点 • Watchpoints 一、必备篇 1.1 打印变量 print :打印变量的值可以使用 print命令,该命令如果打印的是简单类型,则会列出简单类型的类型和值。如果是对象,还会打印出对象指针地址 print object :如果我们只想查看对象的值的信息,则可以使用 po(print object的缩写 )命令 1.2 查看线程状态 thread list 在进程停止后, LLDB会选择一个当前线程和线程中当前帧 (frame)。很多检测状态的命令可以用于这个线程或帧。 为了检测进程的当前状态,使用该命令,星号 (*)表示 thread #1为当前线程 1.3 获取线程的跟踪栈 使用命令 thread backtrace (简写bt),若要查看所有线程的调用栈则可以使用命令: thread

7、Fiddler抓包工具学习:

元气小坏坏 提交于 2020-03-02 11:34:49
十三、抓包工具 Fiddler学习: 虚拟机和主机设置在同一网段:虚拟机设置网络模式为桥接模式 Fiddler 的运用: 1 、header 、cookie 2 、设置断点:Rules->Automatic Breakpoints 3 、添加筛选: 右上方Filters- 》hosts :show only the following Hosts-> 输入框输入需要过滤的地址 4、进行接口测试 什么是 Fiddler? Fiddler是位于客户端和服务器端的 HTTP代理,也是目前最常用的 http抓包工具之一 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的 HTTP请求,分析请求数据、设置断点、调试 web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是 web调试的利器。 1 、监控浏览器所有的http/https 请求 2、查看、分析请求内容细节 3、测试网站性能 4 、解密https 的web 会话 5、全局、局部断电功能 6、第三方插件 使用场景: 接口调试、接口测试、线上环境调试、 web性能分析 判断前后端 bug、开发环境 hosts配置、 mock、弱网断网测试 快捷键: fn+del:删除选中会话 shift+fn+del :删除没有选中的所有会话 commond+x :删除所有会话 shift+r:重放多次(多次请求接口

iOS 开发的9个超有用小技巧

那年仲夏 提交于 2020-03-02 08:30:07
1.如何快速的查看一段代码的执行时间。 #define TICK NSDate *startTime = [NSDate date] #define TOCK NSLog(@"Time: %f", -[startTime timeIntervalSinceNow]) 在想要查看执行时间的代码的地方进行这么处理 TICK //do your work here TOCK 2.如何快速查看一个函数的调用次数,且不添加一句代码。 如下图 这种方法适合于一个if方法,一个for循环,而且不会中断程序,切不需要加一句代码。但是一定要记得选中下面的automatically continue after evaluting actions; 3.在使用view的缩放的时候,layer.border.width随着view的放大,会出现锯齿化的问题,解决这个问题需要设置这个属性。 self.layer.allowsEdgeAntialiasing = YES; 4.instrument中time profile中的self, #self,%self各代表什么 ? 下面引用了一下网上的具体内容 “Self is "The number of times the symbol calls itself." according to the Apple Docs on the Time

OD调试学习笔记7—去除未注册版软件的使用次数限制

风格不统一 提交于 2020-03-02 00:37:25
OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路   仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需要你掏腰包来获得更多的功能或者解除限制。那么我们就可以逆向的来思考,如果该程序成功的注册后,那么程序的行为必将发生变化,如NAG去除了,如功能限制没有了等等。也就是说,程序的代码的走法也会跟未注册的时候截然不同。因为程序的行为改变了,那么决定它所有行为的代码走法也会发生变化。 二:认识OD的两种断点 OllyDBG从原理上来区分,有两种不同的断点:软件断点和硬件断点。 也许会有朋友说那不是还有内存断点吗? 内存断点严格来说是属于一种特殊的软件断点。 内存断点: – 内存断点每次只能设置一个,假如你设置了另一个内存断点,则上一个会被自动删除。 – 设置一个内存断点,会改变整块(4KB)内存的属性,哪怕你只设置一个字节的内存断点。 – 另外还需要提一下的是,内存断点会明显降低OD的性能,因为OD经常会校对内存。 软件断点: – 当我们按下F2设置的断点就是软件断点。 – 设置该断点的原理是在断点处重写代码,插入一个int3中断指令,当CPU执行到int3指令的时候,OD就可以获得控制权。 硬件断点: – 这个原理跟软件断点不同,硬件断点的可行性依赖于CPU的物理支持。 – 传说中

Xcode基本操作

筅森魡賤 提交于 2020-03-01 20:50:03
1.Xcode IDE概览 说明 :从左到右,依次是“ 导航窗格 (Navigator)-> 边列 (Gutter)-> 焦点列 (Ribbon)-> 代码编辑窗口 (Standard/Primary Editor)”。 边列(Gutter ) :显示行号和断点。 焦点列(Ribbon) :灰色深度与代码嵌套深度相关:鼠标悬停可 突出 显示右侧相应代码块( Focus code blocks on hover),鼠标单击可 折叠 右侧相应代码块(Code folding)。 2.偏好设置 通过“command+,”快捷键或”Xcode|Preferences”菜单呼出偏好设置。 (1)主题及字体 (Preferences->Fonts & Colors) 选中一种 主题 ( theme ),例如“Midnight”,推荐使用 Monokai 、 Ciapre 。将 `*. dvtcolortheme ` 文件拷贝到 ` ~/Library/Developer/Xcode/UserData/FontAndColorThemes/ `即可安装主题, 重启 Xcode 即可选用。 Xcode默认字体为menlo,也可选择 Consolas、Monaco、Consolas、Droid Sans Mono、Source Code Pro、Bitstream Vera Sans 等其他等宽字体

慕课笔记——debug

二次信任 提交于 2020-03-01 12:54:43
1.前段调控dubug 1.1以dubug模式启动tomcat,刷新浏览器界面——右键空白处——检查——sources——找到.js文件 1.2在需要测试的方法的第一行设置断点,填写信息提交,就会进入第一行, f10(step over next function)下一句代码,不进入方法里面 f11(step into next function)进入下一个方法里进行调试 Shift+f11(step out of current function)退出当前方法 Deactivate breakpoints将所有断点至于失效状态 再点一次恢复 f8(Resume script execution)跳到下一个断点 1.3每执行一句语句后,便可查看信息是否传入 1.4在watch里可以查看执行过所有语句信息,不需在用鼠标一个个查看 2.联动后端 2.1提前在后端肯定执行的地方设置断点,跳过前段所有断点,就可以直接跳到后端了 2.1.1 查找传入的后端 2.1.2在方法的第一行语句设置断点 3.选择变量右键——inspect,就可以观察到当前变量的值 若这个变量需要查看次数较多,可将其加入到watch中(右键选择watch) 4.f5(step into)进入某个被调用的子方法里面 F6(step over)跳过某个方法执行下一步 F8(resume)直接执行下一个断点 来源: CSDN

安卓逆向学习——动态调试

倖福魔咒の 提交于 2020-02-29 11:20:33
安装好AndroidStudio后设置JDK和SDK路径 安装Smali插件 选择你的Smalidea插件的位置 添加插件 接下来把要安装的apk安装到模拟器上运行该进程 打开AS,选择打开项目,直接导入AK反编译的apk文件路径即可。 复制上面的文件路径 打开AS导入对应路径项目 导入成功后选择Project 连接模拟器Shell查看进程 找到我们打开进程的PID 转发调试端口到8700 开始配置AS的调试设置 添加调试策略 选择字符串搜索,找到要下断点的Smali代码位置,我们这里以字符串定位 我们搜索onKey()函数,并在其中执行的位置下断点。 点击Debug按钮 开始测试调试,随意输入一些内容按回车,发现多出以下信息 右侧是自定义查看窗口,可以随意查看想要看的变量 F8键是单步步过,也可以按下面的按钮实现 F7单步步入 这种动态调试虽然没有jeb提示那么清晰,但是却更加稳定,可以修改this指针的值,除了this指针的值其他寄存器是不能修改的。 第二种调试方法 可以不用输入转发端口指令,只需要打开ddms,点击想要调试的进程 然后直接点击Debug按钮即可调试 如果出现以下错误提示是代表调试端口被占用了,需要重启一下连接服务 重启服务 重新选择要调试程序,发现有调试图标 再次点击调试,又一次进入调试状态 指定调试开始的入口点 有的时候我们不希望以附加方式进行调试

C# json字符串解析含有双引号

ぐ巨炮叔叔 提交于 2020-02-29 10:49:08
最近在维护一个C#项目,一个ajax请求列表数据没有展示数据。 第一反应就是查看请求有没有数据,于是到后台打断点发现有数据,但是页面没有展示。 此时觉得有点诡异,于是在ajax的error方法里面设置断点,居然进来了,于是打印错误消息,发现是json转换异常。 于是想到可能是有特殊字符,定位到315,发现是字符串中含有双引号。 解决办法想到了在JSONARRAY先将字符串encode,然后在js中在decoder。 经过测试问题解决了!!! 来源: https://www.cnblogs.com/java-chanjuan/p/6580943.html

xcode lldb gdb调试

拥有回忆 提交于 2020-02-29 08:12:50
应用调试: 1 xcode gdb/lldb调试命令 命令 解释 break NUM 在指定的行上设置断点。 bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。 clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。 continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。 display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。 file FILE 装载指定的可执行文件进行调试。 help NAME 显示指定命令的帮助信息。 info break 显示当前断点清单,包括到达断点处的次数等。 info files 显示被调试文件的详细信息。 info func 显示所有的函数名称。 info local 显示当函数中的局部变量信息。 info prog 显示被调试程序的执行状态。 info var 显示所有的全局和静态变量名称。 kill 终止正被调试的程序。 list 显示源代码段。 make 在不退出 gdb 的情况下运行 make 工具。 next 在不单步执行进入其他函数的情况下,向前执行一行源代码。 print EXPR 显示表达式 EXPR 的值。 print-object 打印一个对象 print (int) name 打印一个类型 print

远程调试方式

烂漫一生 提交于 2020-02-29 05:53:37
使用特定JVM参数运行服务端代码 要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的JVM参数,这些参数是: 1 -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port} 其中的${debug_port}是用户自定义的,为debug端口,本例以5555端口为例。 transport: 表示信息传递的连接方式, 其中,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台。 server: server=y 表示是监听其他debug client端的请求 address 表示等待调试的连接网络端口 suspend 表示是否在启动目标虚拟机后挂起虚拟机,如果要调试启动过程,请使用y 参数说明: address为远程调试的端口号,目前我们服务器上8412是一个开放的端口(staging环境已验证) -Xrunjdwp 使用jdwp( Java Debug Wire Protocol)进行调试 transport=dt_socket 使用socket方式进行连接,还可以使用其他通信方式如(dt_shmem 共享内存) suspend=n JVM监听address端口传来的信号时不挂起JVM中运行的进程