[iOS知识简记]-调试

lldb命令

常用命令

image list 模块列表
image list -o -f
x 0x1234567 内存
dis -s 0x1234567 反汇编
p/x
p/d
p/c for a character
p/s for a string
register read
br li
br dis 1
br del 1
br s -a 0x104334
b
c
bt
script

pinternals

(lldb) po $x0
(lldb) po $rdi
(lldb) po [0x7f8427d0d040 _ivarDescription]
(lldb) po [self _ivarDescription]
(lldb) po [self _methodDescription]
(lldb) po [self _shortMethodDescription]

Updating the UI(强制断点后)

(lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
<UIWindow: 0x7fed606064a0; frame = (0 0; 375 667); autoresize = W+H; gestureRecognizers = <NSArray: 0x6000024da070>; layer = <UIWindowLayer: 0x600002a89fc0>>
   | <UIView: 0x7fed60509780; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x600002ac8300>>
   |    | <_UILayoutGuide: 0x7fed6050e0f0; frame = (0 0; 0 20); hidden = YES; layer = <CALayer: 0x600002ac82a0>>
   |    | <_UILayoutGuide: 0x7fed6050e500; frame = (0 667; 0 0); hidden = YES; layer = <CALayer: 0x600002ac83c0>>

(lldb) e id $myView = (id)0x7fed60509780
(lldb) e (void)[$myView setBackgroundColor:[UIColor greenColor]]
(lldb) e (void)[CATransaction flush]

Pushing a View Controller

(lldb) e id $nvc = [[[UIApplication sharedApplication] keyWindow] rootViewController]
(lldb) e id $vc = [UIViewController new]
(lldb) e (void)[[$vc view] setBackgroundColor:[UIColor yellowColor]]
(lldb) e (void)[$vc setTitle:@"Yay!"]
(lldb) e (void)[$nvc pushViewContoller:$vc animated:YES]
(lldb) e (void)[CATransaction flush]

Observing an Instance Variable Changing

(lldb) p (ptrdiff_t)ivar_getOffset((struct Ivar *)class_getInstanceVariable([MyView class], "_layer"))
(ptrdiff_t) $0 = 8
(lldb) watchpoint set expression -- (int *)$myView + 8
Watchpoint created: Watchpoint 3: addr = 0x7fa554231340 size = 8 state = enabled type = w
    new value: 0x0000000000000000

Symbolic Breakpoints on Non-Overridden Methods

(lldb) bmessage -[MyViewController viewDidAppear:]
Setting a breakpoint at -[UIViewController viewDidAppear:] with condition (void*)object_getClass((id)$rdi) == 0x000000010e2f4d28
Breakpoint 1: where = UIKit`-[UIViewController viewDidAppear:], address = 0x000000010e11533c

How debuggers work

  • https://eli.thegreenplace.net/2011/01/23/how-debuggers-work-part-1.html
  • https://eli.thegreenplace.net/2011/01/27/how-debuggers-work-part-2-breakpoints
  • https://eli.thegreenplace.net/2011/02/07/how-debuggers-work-part-3-debugging-information

Dancing in the Debugger — A Waltz with LLDB

  • https://www.objc.io/issues/19-debugging/lldb-debugging/

chisel

  • https://github.com/facebook/chisel
  • http://www.arigrant.com/blog/2014/2/18/chisels-print-invocation-command
  • https://www.imooc.com/article/37396

chisel原理

lldb可加载python脚本(配置文件.lldbinit配置入口python文件和入口函数__lldb_init_module),脚本里有lldb接口可以执行命令串和OC代码,所以脚本可扩展的很复杂。同时,也支持动态库扩展功能函数,比如内存搜索OC对象的PrintInstances函数。

others

《Advanced_Apple_Debugging_&_Reverse_Engineering_v1.0》

backboardd

  • The render server is actually another process (called backboardd)。

springboard

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
<think>嗯,用户这次询问的是eNSP命令的简记内容。虽然用户引用了一些网络工程相关的资料,但那些看起来更像是之前搜索的残留信息,而不是当前问题的直接关联内容。 考虑到用户之前并没有询问过eNSP相关的问题,这应该是个全新的查询。用户可能是网络工程专业的学生或从业者,正在使用华为的eNSP模拟器做实验,需要快速查阅常用命令的简化形式。ta特意提到"简记",说明需要的是命令的缩写形式而非完整拼写。 我回忆了一下华为设备的常用命令缩写规则:通常取命令的前几个字母,遇到冲突时会适当增加字母。比如"display"缩写为"dis","interface"缩写为"int"。需要特别注意特权模式下的命令前缀缩写,比如"system-view"可以简写为"sys"。 用户可能正在实验室做配置,所以需要快速调取命令。我应该把最常用的基础命令缩写列在前面,比如视图切换、查看配置这些高频操作。同时也要包含接口配置、路由协议等进阶命令的缩写,这样既能满足新手需求,也不让进阶用户失望。 考虑到命令缩写可能存在歧义,最好在每个命令后面标注适用的视图模式。比如"ip route"在系统视图下可用,而"display"只能在用户视图下执行。这样能避免用户误操作。 最后准备几个典型问题作为延伸,帮助用户解决可能遇到的后续疑问。比如配置保存这种实用操作,以及查看OSPF邻居状态这种常见故障排查场景的问题。 </think>以下为eNSP常用命令的简记形式(基于华为设备命令体系): ### 基础操作 ```bash sys # system-view(进入系统视图)[^1] dis cur # display current-configuration(显示当前配置) dis ip int b # display ip interface brief(查看接口IP摘要) q # quit(退出当前视图) save # 保存配置 ``` ### 接口配置 ```bash int g0/0/0 # interface GigabitEthernet 0/0/0(进入接口视图) ip add 192.168.1.1 24 # ip address 192.168.1.1 255.255.255.0 undo shut # 开启接口(默认shutdown状态) ``` ### 路由协议 ```bash rip # 进入RIP视图 ospf 1 # 启动OSPF进程1[^1] network 192.168.1.0 0.0.0.255 # 宣告网段 ``` ### 查看诊断 ```bash dis arp # display arp(查看ARP表) dis ip rout # display ip routing-table(显示路由表) ping 192.168.1.2 # 测试连通性 tracert 8.8.8.8 # 路径追踪 ``` ### 进阶功能 ```bash vlan 10 # 创建VLAN 10 port li acc # port link-type access(设置接口为access模式) port de vlan 10 # port default vlan 10 stp root primary # 指定根桥 ``` > ⚠️ 注意:简记命令依赖上下文环境(如`sys`仅在用户视图生效),使用`Tab`键可自动补全命令。 --- ### 相关问题 1. 如何用eNSP实现VLAN间路由? 2. eNSP中OSPF邻居无法建立常见原因? 3. eNSP如何抓取特定接口的数据包? 4. 在eNSP中如何保存设备配置到本地? 5. eNSP模拟器支持哪些动态路由协议?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值