|
84 | 84 | " while stderr:\n" |
85 | 85 | " sys.stdout.write(stderr)\n" |
86 | 86 | " stderr = process.GetSTDERR(1024)\n" |
87 | | -"import lldb\n" |
88 | | -"import os\n" |
89 | | -"import sys\n" |
90 | | -"import shlex\n" |
91 | | -"\n" |
92 | | -"def connect_command(debugger, command, result, internal_dict):\n" |
93 | | -" # These two are passed in by the script which loads us\n" |
94 | | -" connect_url = internal_dict['fruitstrap_connect_url']\n" |
95 | | -" error = lldb.SBError()\n" |
96 | | -"\n" |
97 | | -" process = lldb.target.ConnectRemote(lldb.target.GetDebugger().GetListener(), connect_url, None, error)\n" |
98 | | -"\n" |
99 | | -" # Wait for connection to succeed\n" |
100 | | -" listener = lldb.target.GetDebugger().GetListener()\n" |
101 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged)\n" |
102 | | -" events = []\n" |
103 | | -" state = (process.GetState() or lldb.eStateInvalid)\n" |
104 | | -" while state != lldb.eStateConnected:\n" |
105 | | -" event = lldb.SBEvent()\n" |
106 | | -" if listener.WaitForEvent(1, event):\n" |
107 | | -" state = process.GetStateFromEvent(event)\n" |
108 | | -" events.append(event)\n" |
109 | | -" else:\n" |
110 | | -" state = lldb.eStateInvalid\n" |
111 | | -"\n" |
112 | | -" # Add events back to queue, otherwise lldb freezes\n" |
113 | | -" for event in events:\n" |
114 | | -" listener.AddEvent(event)\n" |
115 | | -"\n" |
116 | | -"def run_command(debugger, command, result, internal_dict):\n" |
117 | | -" device_app = internal_dict['fruitstrap_device_app']\n" |
118 | | -" args = command.split('--',1)\n" |
119 | | -" error = lldb.SBError()\n" |
120 | | -" lldb.target.modules[0].SetPlatformFileSpec(lldb.SBFileSpec(device_app))\n" |
121 | | -" lldb.target.Launch(lldb.SBLaunchInfo(shlex.split(args[1] and args[1] or '{args}')), error)\n" |
122 | | -" lockedstr = ': Locked'\n" |
123 | | -" if lockedstr in str(error):\n" |
124 | | -" print('\\nDevice Locked\\n')\n" |
125 | | -" os._exit(254)\n" |
126 | | -" else:\n" |
127 | | -" print(str(error))\n" |
128 | | -"\n" |
129 | | -"def safequit_command(debugger, command, result, internal_dict):\n" |
130 | | -" process = lldb.target.process\n" |
131 | | -" listener = debugger.GetListener()\n" |
132 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged | lldb.SBProcess.eBroadcastBitSTDOUT | lldb.SBProcess.eBroadcastBitSTDERR)\n" |
133 | | -" event = lldb.SBEvent()\n" |
134 | | -" while True:\n" |
135 | | -" if listener.WaitForEvent(1, event) and lldb.SBProcess.EventIsProcessEvent(event):\n" |
136 | | -" state = lldb.SBProcess.GetStateFromEvent(event)\n" |
137 | | -" else:\n" |
138 | | -" state = process.GetState()\n" |
139 | | -"\n" |
140 | | -" if state == lldb.eStateRunning:\n" |
141 | | -" process.Detach()\n" |
142 | | -" os._exit(0)\n" |
143 | | -" elif state > lldb.eStateRunning:\n" |
144 | | -" os._exit(state)\n" |
145 | | -"\n" |
146 | | -"def autoexit_command(debugger, command, result, internal_dict):\n" |
147 | | -" process = lldb.target.process\n" |
148 | | -" listener = debugger.GetListener()\n" |
149 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged | lldb.SBProcess.eBroadcastBitSTDOUT | lldb.SBProcess.eBroadcastBitSTDERR)\n" |
150 | | -" event = lldb.SBEvent()\n" |
151 | | -" while True:\n" |
152 | | -" if listener.WaitForEvent(1, event) and lldb.SBProcess.EventIsProcessEvent(event):\n" |
153 | | -" state = lldb.SBProcess.GetStateFromEvent(event)\n" |
154 | | -" else:\n" |
155 | | -" state = process.GetState()\n" |
156 | | -"\n" |
157 | | -" if state == lldb.eStateExited:\n" |
158 | | -" os._exit(process.GetExitStatus())\n" |
159 | | -" elif state == lldb.eStateStopped:\n" |
160 | | -" debugger.HandleCommand('bt')\n" |
161 | | -" os._exit({exitcode_app_crash})\n" |
162 | | -"\n" |
163 | | -" stdout = process.GetSTDOUT(1024)\n" |
164 | | -" while stdout:\n" |
165 | | -" sys.stdout.write(stdout)\n" |
166 | | -" stdout = process.GetSTDOUT(1024)\n" |
167 | | -"\n" |
168 | | -" stderr = process.GetSTDERR(1024)\n" |
169 | | -" while stderr:\n" |
170 | | -" sys.stdout.write(stderr)\n" |
171 | | -" stderr = process.GetSTDERR(1024)\n" |
172 | | -"import lldb\n" |
173 | | -"import os\n" |
174 | | -"import sys\n" |
175 | | -"import shlex\n" |
176 | | -"\n" |
177 | | -"def connect_command(debugger, command, result, internal_dict):\n" |
178 | | -" # These two are passed in by the script which loads us\n" |
179 | | -" connect_url = internal_dict['fruitstrap_connect_url']\n" |
180 | | -" error = lldb.SBError()\n" |
181 | | -"\n" |
182 | | -" process = lldb.target.ConnectRemote(lldb.target.GetDebugger().GetListener(), connect_url, None, error)\n" |
183 | | -"\n" |
184 | | -" # Wait for connection to succeed\n" |
185 | | -" listener = lldb.target.GetDebugger().GetListener()\n" |
186 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged)\n" |
187 | | -" events = []\n" |
188 | | -" state = (process.GetState() or lldb.eStateInvalid)\n" |
189 | | -" while state != lldb.eStateConnected:\n" |
190 | | -" event = lldb.SBEvent()\n" |
191 | | -" if listener.WaitForEvent(1, event):\n" |
192 | | -" state = process.GetStateFromEvent(event)\n" |
193 | | -" events.append(event)\n" |
194 | | -" else:\n" |
195 | | -" state = lldb.eStateInvalid\n" |
196 | | -"\n" |
197 | | -" # Add events back to queue, otherwise lldb freezes\n" |
198 | | -" for event in events:\n" |
199 | | -" listener.AddEvent(event)\n" |
200 | | -"\n" |
201 | | -"def run_command(debugger, command, result, internal_dict):\n" |
202 | | -" device_app = internal_dict['fruitstrap_device_app']\n" |
203 | | -" args = command.split('--',1)\n" |
204 | | -" error = lldb.SBError()\n" |
205 | | -" lldb.target.modules[0].SetPlatformFileSpec(lldb.SBFileSpec(device_app))\n" |
206 | | -" lldb.target.Launch(lldb.SBLaunchInfo(shlex.split(args[1] and args[1] or '{args}')), error)\n" |
207 | | -" lockedstr = ': Locked'\n" |
208 | | -" if lockedstr in str(error):\n" |
209 | | -" print('\\nDevice Locked\\n')\n" |
210 | | -" os._exit(254)\n" |
211 | | -" else:\n" |
212 | | -" print(str(error))\n" |
213 | | -"\n" |
214 | | -"def safequit_command(debugger, command, result, internal_dict):\n" |
215 | | -" process = lldb.target.process\n" |
216 | | -" listener = debugger.GetListener()\n" |
217 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged | lldb.SBProcess.eBroadcastBitSTDOUT | lldb.SBProcess.eBroadcastBitSTDERR)\n" |
218 | | -" event = lldb.SBEvent()\n" |
219 | | -" while True:\n" |
220 | | -" if listener.WaitForEvent(1, event) and lldb.SBProcess.EventIsProcessEvent(event):\n" |
221 | | -" state = lldb.SBProcess.GetStateFromEvent(event)\n" |
222 | | -" else:\n" |
223 | | -" state = process.GetState()\n" |
224 | | -"\n" |
225 | | -" if state == lldb.eStateRunning:\n" |
226 | | -" process.Detach()\n" |
227 | | -" os._exit(0)\n" |
228 | | -" elif state > lldb.eStateRunning:\n" |
229 | | -" os._exit(state)\n" |
230 | | -"\n" |
231 | | -"def autoexit_command(debugger, command, result, internal_dict):\n" |
232 | | -" process = lldb.target.process\n" |
233 | | -" listener = debugger.GetListener()\n" |
234 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged | lldb.SBProcess.eBroadcastBitSTDOUT | lldb.SBProcess.eBroadcastBitSTDERR)\n" |
235 | | -" event = lldb.SBEvent()\n" |
236 | | -" while True:\n" |
237 | | -" if listener.WaitForEvent(1, event) and lldb.SBProcess.EventIsProcessEvent(event):\n" |
238 | | -" state = lldb.SBProcess.GetStateFromEvent(event)\n" |
239 | | -" else:\n" |
240 | | -" state = process.GetState()\n" |
241 | | -"\n" |
242 | | -" if state == lldb.eStateExited:\n" |
243 | | -" os._exit(process.GetExitStatus())\n" |
244 | | -" elif state == lldb.eStateStopped:\n" |
245 | | -" debugger.HandleCommand('bt')\n" |
246 | | -" os._exit({exitcode_app_crash})\n" |
247 | | -"\n" |
248 | | -" stdout = process.GetSTDOUT(1024)\n" |
249 | | -" while stdout:\n" |
250 | | -" sys.stdout.write(stdout)\n" |
251 | | -" stdout = process.GetSTDOUT(1024)\n" |
252 | | -"\n" |
253 | | -" stderr = process.GetSTDERR(1024)\n" |
254 | | -" while stderr:\n" |
255 | | -" sys.stdout.write(stderr)\n" |
256 | | -" stderr = process.GetSTDERR(1024)\n" |
257 | | -"import lldb\n" |
258 | | -"import os\n" |
259 | | -"import sys\n" |
260 | | -"import shlex\n" |
261 | | -"\n" |
262 | | -"def connect_command(debugger, command, result, internal_dict):\n" |
263 | | -" # These two are passed in by the script which loads us\n" |
264 | | -" connect_url = internal_dict['fruitstrap_connect_url']\n" |
265 | | -" error = lldb.SBError()\n" |
266 | | -"\n" |
267 | | -" process = lldb.target.ConnectRemote(lldb.target.GetDebugger().GetListener(), connect_url, None, error)\n" |
268 | | -"\n" |
269 | | -" # Wait for connection to succeed\n" |
270 | | -" listener = lldb.target.GetDebugger().GetListener()\n" |
271 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged)\n" |
272 | | -" events = []\n" |
273 | | -" state = (process.GetState() or lldb.eStateInvalid)\n" |
274 | | -" while state != lldb.eStateConnected:\n" |
275 | | -" event = lldb.SBEvent()\n" |
276 | | -" if listener.WaitForEvent(1, event):\n" |
277 | | -" state = process.GetStateFromEvent(event)\n" |
278 | | -" events.append(event)\n" |
279 | | -" else:\n" |
280 | | -" state = lldb.eStateInvalid\n" |
281 | | -"\n" |
282 | | -" # Add events back to queue, otherwise lldb freezes\n" |
283 | | -" for event in events:\n" |
284 | | -" listener.AddEvent(event)\n" |
285 | | -"\n" |
286 | | -"def run_command(debugger, command, result, internal_dict):\n" |
287 | | -" device_app = internal_dict['fruitstrap_device_app']\n" |
288 | | -" args = command.split('--',1)\n" |
289 | | -" error = lldb.SBError()\n" |
290 | | -" lldb.target.modules[0].SetPlatformFileSpec(lldb.SBFileSpec(device_app))\n" |
291 | | -" lldb.target.Launch(lldb.SBLaunchInfo(shlex.split(args[1] and args[1] or '{args}')), error)\n" |
292 | | -" lockedstr = ': Locked'\n" |
293 | | -" if lockedstr in str(error):\n" |
294 | | -" print('\\nDevice Locked\\n')\n" |
295 | | -" os._exit(254)\n" |
296 | | -" else:\n" |
297 | | -" print(str(error))\n" |
298 | | -"\n" |
299 | | -"def safequit_command(debugger, command, result, internal_dict):\n" |
300 | | -" process = lldb.target.process\n" |
301 | | -" listener = debugger.GetListener()\n" |
302 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged | lldb.SBProcess.eBroadcastBitSTDOUT | lldb.SBProcess.eBroadcastBitSTDERR)\n" |
303 | | -" event = lldb.SBEvent()\n" |
304 | | -" while True:\n" |
305 | | -" if listener.WaitForEvent(1, event) and lldb.SBProcess.EventIsProcessEvent(event):\n" |
306 | | -" state = lldb.SBProcess.GetStateFromEvent(event)\n" |
307 | | -" else:\n" |
308 | | -" state = process.GetState()\n" |
309 | | -"\n" |
310 | | -" if state == lldb.eStateRunning:\n" |
311 | | -" process.Detach()\n" |
312 | | -" os._exit(0)\n" |
313 | | -" elif state > lldb.eStateRunning:\n" |
314 | | -" os._exit(state)\n" |
315 | | -"\n" |
316 | | -"def autoexit_command(debugger, command, result, internal_dict):\n" |
317 | | -" process = lldb.target.process\n" |
318 | | -" listener = debugger.GetListener()\n" |
319 | | -" listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged | lldb.SBProcess.eBroadcastBitSTDOUT | lldb.SBProcess.eBroadcastBitSTDERR)\n" |
320 | | -" event = lldb.SBEvent()\n" |
321 | | -" while True:\n" |
322 | | -" if listener.WaitForEvent(1, event) and lldb.SBProcess.EventIsProcessEvent(event):\n" |
323 | | -" state = lldb.SBProcess.GetStateFromEvent(event)\n" |
324 | | -" else:\n" |
325 | | -" state = process.GetState()\n" |
326 | | -"\n" |
327 | | -" if state == lldb.eStateExited:\n" |
328 | | -" os._exit(process.GetExitStatus())\n" |
329 | | -" elif state == lldb.eStateStopped:\n" |
330 | | -" debugger.HandleCommand('bt')\n" |
331 | | -" os._exit({exitcode_app_crash})\n" |
332 | | -"\n" |
333 | | -" stdout = process.GetSTDOUT(1024)\n" |
334 | | -" while stdout:\n" |
335 | | -" sys.stdout.write(stdout)\n" |
336 | | -" stdout = process.GetSTDOUT(1024)\n" |
337 | | -"\n" |
338 | | -" stderr = process.GetSTDERR(1024)\n" |
339 | | -" while stderr:\n" |
340 | | -" sys.stdout.write(stderr)\n" |
341 | | -" stderr = process.GetSTDERR(1024)\n" |
0 commit comments