isource_lldb 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rubygems_plugin.rb +8 -8
  3. data/lib/setup +300 -294
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7fa55038536abc6de21219e9859591d863b07670aba7306fe5e024647d8adb57
4
- data.tar.gz: d875c605b97b54eeb6cdcb365ac74e26653b6a523668c6a7f6806fa55496e6fe
3
+ metadata.gz: c979a29a700014a28531eb8a9fe514ea1718a8461444382e8cb5a2c3e69c4a5d
4
+ data.tar.gz: c83ca09991f64b8a18c9483c25a4da45f2a0cd55de188ed20272203b50a16e70
5
5
  SHA512:
6
- metadata.gz: 15f2e6ea42833c9438c6436e3da910a5860f061c2ca61856d3031152adc3e110589169d0c5a0101bda3432347cdf15917434bf7650cdd4fcb9f6aa2b9ba75d20
7
- data.tar.gz: b97b44df7205a9309f9a260623ee6b4e41a6225d2b5bc85677e162f0f4bf74a228f9a2a81908f9ad72c6a8c32463c6e23fada55e7a8f49e1355f594cee172d72
6
+ metadata.gz: 3609f144b237a99a3ae71426696c17fbc4563c43250356740f5f907421a6e8dafeda4462c5f9fd2bcda0cd7b6bc97c97b9cb014201033e66096db180de45a916
7
+ data.tar.gz: df20d2c0f05f8ec2f9e03eee1bcfc9f95d66bb8fd45210e8cb31f66d7784b363317a34a5d38e91458e678a65f67119b2f2e4833fd35a419595b7093d3a3f859c
@@ -7,11 +7,6 @@ Lldb_source_path = File.expand_path('~')+'/.isource_lldb'
7
7
  Lldb_file_path = File.expand_path('~')+'/.isource_lldb/isource_lldb.py'
8
8
  Commond_str = 'command script import '+Lldb_file_path
9
9
 
10
-
11
- Gem.pre_install do
12
- `export PATH="\`ruby -e 'puts Gem.user_dir'\`/bin:$PATH"`
13
- end
14
-
15
10
  Gem.post_install do
16
11
 
17
12
  # 配置 .lldbinit
@@ -41,11 +36,15 @@ Gem.post_install do
41
36
  if !File.exist?(Lldb_source_path)
42
37
  Dir.mkdir(Lldb_source_path)
43
38
  end
39
+
44
40
  File.chmod(0775,Lldb_source_path)
45
- scriptPath = File.dirname(Pathname.new(__FILE__).realpath)
46
- File.rename scriptPath+'/setup', Lldb_file_path
47
- File.chmod(0775,Lldb_file_path)
48
41
 
42
+ scriptPath = File.dirname(Pathname.new(__FILE__).realpath)
43
+ if File.exist?(scriptPath+'/setup')
44
+ File.rename scriptPath+'/setup', Lldb_file_path
45
+ File.chmod(0775,Lldb_file_path)
46
+ end
47
+
49
48
  puts "Please use the isource command in your Xcode LLDB."
50
49
  end
51
50
 
@@ -88,6 +87,7 @@ Gem.post_uninstall do
88
87
  remove_file()
89
88
  end
90
89
 
90
+ puts "Thank you for using isource."
91
91
 
92
92
  end
93
93
 
data/lib/setup CHANGED
@@ -1,295 +1,301 @@
1
1
  # !/usr/bin/env python3
2
- import lldb #line:5
3
- import os #line:6
4
- import re #line:7
5
- import time #line:8
6
- import datetime #line:9
7
- import queue #line:10
8
- import shutil #line:11
9
- import threading #line:12
10
- import sys #line:13
11
- from threading import Thread #line:14
12
- user_dir =os .path .expanduser ('~')#line:16
13
- source_lldb_dir =user_dir +"/.isource_lldb"#line:17
14
- source_code_dir =source_lldb_dir +"/source_code"#line:18
15
- drrr_job_inis_dir =source_lldb_dir +"/drrr_job_inis"#line:19
16
- drrr_job_inis_dir_modules =drrr_job_inis_dir +"/modules"#line:20
17
- drrr_job_inis_addr ='ssh://git@gitlab.qiyi.domain:10022/qytools/drrr_job_inis.git'#line:21
18
- project_info_cache =source_lldb_dir +"/project_info_cache.txt"#line:22
19
- def lz_error (OOOO000000OO000OO ):#line:24
20
- print ("internal error code : "+str (OOOO000000OO000OO ))#line:25
21
- def lz_log (O0OO00OO000O00000 ):#line:27
22
- pass #line:30
23
- def manage_source_dir ():#line:33
24
- OOOOOO0OO0OO0O000 =os .path .exists (source_lldb_dir )#line:34
25
- if not OOOOOO0OO0OO0O000 :#line:35
26
- os .makedirs (source_lldb_dir )#line:36
27
- os .makedirs (source_code_dir )#line:37
28
- else :#line:38
29
- O0OO00OOOOOO000O0 =os .path .exists (source_code_dir )#line:39
30
- if not O0OO00OOOOOO000O0 :#line:40
31
- os .makedirs (source_code_dir )#line:41
32
- def create_cache_file ():#line:44
33
- O00O00OO0O0OOOO00 =os .path .exists (project_info_cache )#line:45
34
- if not O00O00OO0O0OOOO00 :#line:46
35
- O00OO0O00OOO0O0O0 =open (project_info_cache ,'w')#line:47
36
- O00OO0O00OOO0O0O0 .close ()#line:48
37
- def write_cache_file (O0O00OOOO0O0OO0OO ):#line:50
38
- if O0O00OOOO0O0OO0OO [0 ]!=None and O0O00OOOO0O0OO0OO [1 ]!=None and O0O00OOOO0O0OO0OO [2 ]!=None and O0O00OOOO0O0OO0OO [3 ]!=None :#line:51
39
- O000OO000O0OOOO0O =list (O0O00OOOO0O0OO0OO )#line:52
40
- OOOOO00O0O00OO0O0 ='---'.join (O000OO000O0OOOO0O )#line:53
41
- OO0O0O0O00OOOOOOO =open (project_info_cache ,'a+')#line:54
42
- OO0O0O0O00OOOOOOO .write (OOOOO00O0O00OO0O0 +"\n")#line:55
43
- OO0O0O0O00OOOOOOO .close ()#line:56
44
- def read_cache_file (O0O0OO00O000O0O0O ):#line:58
45
- O0O0O0OOOO0OOOOOO =None #line:59
46
- with open (project_info_cache ,'r',encoding ='utf-8')as OOO0OO00OO00OOO00 :#line:60
47
- O0OOO0OO0OO0O000O =OOO0OO00OO00OOO00 .readlines ()#line:61
48
- for O00000O0O0OOO0OO0 in range (0 ,len (O0OOO0OO0OO0O000O )):#line:62
49
- OO0000000O00O0O00 =re .search (O0O0OO00O000O0O0O ,O0OOO0OO0OO0O000O [O00000O0O0OOO0OO0 ])#line:63
50
- if OO0000000O00O0O00 !=None :#line:64
51
- OO0O0OO0OO0000O0O =O0OOO0OO0OO0O000O [O00000O0O0OOO0OO0 ]#line:65
52
- OOOO00OOO00O0OO00 =OO0O0OO0OO0000O0O .split ('---')#line:66
53
- O0O0O0OOOO0OOOOOO =tuple (OOOO00OOO00O0OO00 )#line:67
54
- break #line:68
55
- return O0O0O0OOOO0OOOOOO #line:69
56
- def manage_job_inis ():#line:72
57
- O0OOOO00OOOOO00O0 =os .path .exists (drrr_job_inis_dir )#line:73
58
- if O0OOOO00OOOOO00O0 ==True :#line:74
59
- OO0OOO000000OOO0O ="cd "+drrr_job_inis_dir +"; git pull"#line:75
60
- O0000OOOOO0O0000O =os .popen (OO0OOO000000OOO0O )#line:76
61
- OOO000OO00000OO0O =O0000OOOOO0O0000O .read ()#line:77
62
- OOO00000O0O0O0OO0 =re .search ("fatal",OOO000OO00000OO0O )#line:78
63
- if OOO00000O0O0O0OO0 !=None :#line:79
64
- lz_error (0 )#line:80
65
- else :#line:81
66
- O000O00O0000OO00O ="git clone "+drrr_job_inis_addr +" "+drrr_job_inis_dir #line:82
67
- O0000OOOOO0O0000O =os .popen (O000O00O0000OO00O )#line:83
68
- OOO000OO00000OO0O =O0000OOOOO0O0000O .read ()#line:84
69
- OOO00000O0O0O0OO0 =re .search ("fatal",OOO000OO00000OO0O )#line:85
70
- if OOO00000O0O0O0OO0 !=None :#line:86
71
- lz_error (0 )#line:87
72
- def get_debug_file_path (O000O00OO0O0OO000 ):#line:90
73
- OO000O00O000O0000 =lldb .debugger .GetCommandInterpreter ()#line:91
74
- O0O0O00000O0OO00O =lldb .SBCommandReturnObject ()#line:92
75
- OO000O00O000O0000 .HandleCommand ('image lookup -v --address '+O000O00OO0O0OO000 ,O0O0O00000O0OO00O )#line:93
76
- O000OOOOO0O000000 =O0O0O00000O0OO00O .GetOutput ()#line:94
77
- O00O00O000O000OOO =""#line:96
78
- O0OO000O0OO0O00OO =re .search ('error',O000OOOOO0O000000 )#line:97
79
- if O0OO000O0OO0O00OO !=None :#line:98
80
- return O00O00O000O000OOO #line:99
81
- OOO0OO0OO0OO0OO0O =O000OOOOO0O000000 .split ("\n")#line:102
82
- if len (OOO0OO0OO0OO0OO0O )>3 :#line:103
83
- OOO0OOO0OOO0O0O0O =OOO0OO0OO0OO0OO0O [3 ].strip ()#line:104
84
- O0OO0OOO0000OOO00 =OOO0OOO0OOO0O0O0O .split (",")#line:106
85
- if len (O0OO0OOO0000OOO00 )>1 :#line:107
86
- OO00OO000O0000O0O =O0OO0OOO0000OOO00 [1 ].strip ()#line:108
87
- OO000000OO0O0O0O0 =OO00OO000O0000O0O .split ("=")#line:110
88
- if len (OO000000OO0O0O0O0 )>1 :#line:111
89
- OOO000OO00OOO0000 =OO000000OO0O0O0O0 [1 ].strip ()#line:112
90
- O00O00O000O000OOO =OOO000OO00OOO0000 .replace ('\"','')#line:114
91
- return O00O00O000O000OOO #line:116
92
- def get_inis_info (O0OO00OO0O0O0000O ):#line:119
93
- O0O0OO000O00000O0 =None #line:121
94
- O0O0O00OOOO0OO00O =None #line:122
95
- OO0O0OOOOOOO0OOO0 =None #line:123
96
- O0OO0O0OO000O0000 =None #line:124
97
- OOOO0O00OOOOO000O =O0OO00OO0O0O0000O .split ("/")#line:127
98
- for O0OO0OOO000O0000O in range (0 ,len (OOOO0O00OOOOO000O )):#line:128
99
- if OOOO0O00OOOOO000O [O0OO0OOO000O0000O ]=="module_files":#line:129
100
- O0O0O00OOOO0OO00O =OOOO0O00OOOOO000O [O0OO0OOO000O0000O ]+"/"+OOOO0O00OOOOO000O [O0OO0OOO000O0000O +1 ]+"/"+OOOO0O00OOOOO000O [O0OO0OOO000O0000O +2 ]#line:130
101
- O0O0OO000O00000O0 =OOOO0O00OOOOO000O [O0OO0OOO000O0000O +1 ]#line:131
102
- break #line:132
103
- if O0O0O00OOOO0OO00O !=None and len (O0O0O00OOOO0OO00O )>0 :#line:139
104
- OOOO000O00OOO0000 =os .listdir (drrr_job_inis_dir_modules )#line:140
105
- for O0OO0OOO000O0000O in range (0 ,len (OOOO000O00OOO0000 )):#line:141
106
- O00OO00O0O0OO0OOO =drrr_job_inis_dir_modules +"/"+OOOO000O00OOO0000 [O0OO0OOO000O0000O ]#line:142
107
- with open (O00OO00O0O0OO0OOO ,'r',encoding ='utf-8')as O000O00OO0000O0OO :#line:144
108
- OOOO0OO00OOO000OO =O000O00OO0000O0OO .readlines ()#line:145
109
- for O0OO0OOO000O0000O in range (0 ,len (OOOO0OO00OOO000OO )):#line:146
110
- O000O000OO0O00O00 =re .search (O0O0O00OOOO0OO00O ,OOOO0OO00OOO000OO [O0OO0OOO000O0000O ])#line:147
111
- if O000O000OO0O00O00 !=None :#line:148
112
- OO0O0OOOOOOO0OOO0 =OOOO000O00OOO0000 [O0OO0OOO000O0000O ]#line:149
113
- O0000000O0000000O =O0OO0OOO000O0000O -5 if O0OO0OOO000O0000O >5 else 0 #line:150
114
- O00OOO000O0000O00 =O0OO0OOO000O0000O +5 if O0OO0OOO000O0000O +5 <len (OOOO0OO00OOO000OO )else len (OOOO0OO00OOO000OO )#line:151
115
- for OOOOOO0000O00OOOO in range (O0000000O0000000O ,O00OOO000O0000O00 ):#line:152
116
- O00000OO0O0O0O0OO =re .findall ("ssh://git@gitlab.qiyi.domain:[^/]+?/.*?"+O0O0OO000O00000O0 +"*?[^0~9]?.git",OOOO0OO00OOO000OO [OOOOOO0000O00OOOO ])#line:153
117
- if len (O00000OO0O0O0O0OO )>0 :#line:154
118
- O0OO0O0OO000O0000 =O00000OO0O0O0O0OO [0 ]#line:155
119
- break #line:156
120
- if O0OO0O0OO000O0000 !=None :#line:157
121
- break #line:158
122
- if O0OO0O0OO000O0000 !=None :#line:159
123
- break #line:160
124
- return (O0O0OO000O00000O0 ,OO0O0OOOOOOO0OOO0 ,O0O0O00OOOO0OO00O ,O0OO0O0OO000O0000 )#line:179
125
- def download_git_source_code (OO00OO0OOO0O000O0 ,O00O0O00O00000OO0 ):#line:183
126
- O00OOOO0OO0OOOO00 =source_code_dir +"/"+OO00OO0OOO0O000O0 #line:184
127
- OOOO0OO00O0O0OOO0 =os .path .exists (O00OOOO0OO0OOOO00 )#line:185
128
- if not OOOO0OO00O0O0OOO0 :#line:187
129
- os .makedirs (O00OOOO0OO0OOOO00 )#line:188
130
- OOOOO00O00OO00O00 ="git clone "+O00O0O00O00000OO0 +" "+O00OOOO0OO0OOOO00 #line:189
131
- OOO0O0OO000O0000O =os .popen (OOOOO00O00OO00O00 )#line:190
132
- OO00000O00O00OO00 =OOO0O0OO000O0000O .read ()#line:191
133
- O00O00OO00000O00O =re .search ("fatal",OO00000O00O00OO00 )#line:192
134
- if O00O00OO00000O00O !=None :#line:193
135
- return ""#line:194
136
- else :#line:195
137
- OO00000O00OO00OOO ="cd "+O00OOOO0OO0OOOO00 +"; git pull"#line:196
138
- OOO0O0OO000O0000O =os .popen (OO00000O00OO00OOO )#line:197
139
- OO00000O00O00OO00 =OOO0O0OO000O0000O .read ()#line:198
140
- O00O00OO00000O00O =re .search ("fatal",OO00000O00O00OO00 )#line:199
141
- if O00O00OO00000O00O !=None :#line:200
142
- return ""#line:201
143
- return O00OOOO0OO0OOOO00 #line:203
144
- def get_update_time ():#line:206
145
- O0O00OO00O0OO0O00 =user_dir +"/.cocoapods/repos/qiyi-podspecs/"#line:208
146
- O00OOO0OO0000OOO0 =os .path .getmtime (O0O00OO00O0OO0O00 )#line:209
147
- O0OO0O0O000000O0O =time .localtime (O00OOO0OO0000OOO0 )#line:210
148
- O00000OO00OO0OO0O =time .strftime ("%m %d %H:%M:%S %Y",O0OO0O0O000000O0O )#line:213
149
- OOO000000OO000O00 =O00000OO00OO0OO0O .split (" ")#line:214
150
- OOOOOOO0OOO0O0OO0 =OOO000000OO000O00 [0 ]#line:215
151
- if OOOOOOO0OOO0O0OO0 =='1':#line:217
152
- OOOOOOO0OOO0O0OO0 ='Jan'#line:218
153
- if OOOOOOO0OOO0O0OO0 =='2':#line:219
154
- OOOOOOO0OOO0O0OO0 ='Feb'#line:220
155
- if OOOOOOO0OOO0O0OO0 =='3':#line:221
156
- OOOOOOO0OOO0O0OO0 ='Mar'#line:222
157
- if OOOOOOO0OOO0O0OO0 =='4':#line:223
158
- OOOOOOO0OOO0O0OO0 ='Apr'#line:224
159
- if OOOOOOO0OOO0O0OO0 =='5':#line:225
160
- OOOOOOO0OOO0O0OO0 ='May'#line:226
161
- if OOOOOOO0OOO0O0OO0 =='6':#line:227
162
- OOOOOOO0OOO0O0OO0 ='Jun'#line:228
163
- if OOOOOOO0OOO0O0OO0 =='7':#line:229
164
- OOOOOOO0OOO0O0OO0 ='Jul'#line:230
165
- if OOOOOOO0OOO0O0OO0 =='8':#line:231
166
- OOOOOOO0OOO0O0OO0 ='Aug'#line:232
167
- if OOOOOOO0OOO0O0OO0 =='9':#line:233
168
- OOOOOOO0OOO0O0OO0 ='Sep'#line:234
169
- if OOOOOOO0OOO0O0OO0 =='10':#line:235
170
- OOOOOOO0OOO0O0OO0 ='Oct'#line:236
171
- if OOOOOOO0OOO0O0OO0 =='11':#line:237
172
- OOOOOOO0OOO0O0OO0 ='Nov'#line:238
173
- if OOOOOOO0OOO0O0OO0 =='12':#line:239
174
- OOOOOOO0OOO0O0OO0 ='Dec'#line:240
175
- OOO000000OO000O00 [0 ]=OOOOOOO0OOO0O0OO0 #line:242
176
- return ' '.join (OOO000000OO000O00 )#line:244
177
- def change_source_code_commit (O0000O00OO0O0O000 ):#line:247
178
- O00OOO0OOOO0OOOOO =get_update_time ()#line:250
179
- OO0O0OO00OOOO0OO0 ="cd "+O0000O00OO0O0O000 +"; git rev-list -n 1 --before=\""+O00OOO0OOOO0OOOOO +"\" master"#line:252
180
- OO00O0O0OO0O0OO0O =os .popen (OO0O0OO00OOOO0OO0 )#line:253
181
- O00O0O0O000OO0O0O =OO00O0O0OO0O0OO0O .read ()#line:254
182
- OOOOO0OOO00OOO0O0 =re .search ("fatal",O00O0O0O000OO0O0O )#line:255
183
- if OOOOO0OOO00OOO0O0 !=None :#line:256
184
- return False #line:257
185
- else :#line:258
186
- return True #line:259
187
- def checkError (OOOO000O00OOO00O0 ,OO0O00OOO0OOO0000 ):#line:261
188
- O00OO0O0OO00OOO0O =re .search (OO0O00OOO0OOO0000 ,OOOO000O00OOO00O0 )#line:262
189
- if O00OO0O0OO00OOO0O ==None :#line:263
190
- return True #line:264
191
- else :#line:265
192
- return False #line:266
193
- def map_source_code (O0OO00OO00O0OOOO0 ,O0O0O0OOOOOOO0O00 ,O0000O000OO0O00OO ):#line:269
194
- O0000OOOO0OOO0000 =O0O0O0OOOOOOO0O00 .split (O0000O000OO0O00OO )#line:270
195
- OO000OO00O000O0O0 =O0000OOOO0OOO0000 [0 ]+O0000O000OO0O00OO #line:271
196
- O0OO000000OOOO00O =lldb .debugger .GetCommandInterpreter ()#line:272
197
- O00000OO0OO0OO0O0 =lldb .SBCommandReturnObject ()#line:273
198
- O0OO000000OOOO00O .HandleCommand ("settings append target.source-map "+OO000OO00O000O0O0 +" "+O0OO00OO00O0OOOO0 ,O00000OO0OO0OO0O0 )#line:274
199
- O0OOO000O0O0000OO =O00000OO0OO0OO0O0 .GetOutput ()#line:275
200
- OOOO0O00OO00OOOOO =re .search ('error',O0OOO000O0O0000OO )#line:276
201
- if OOOO0O00OO00OOOOO ==None :#line:277
202
- return True #line:278
203
- else :#line:279
204
- return False #line:280
205
- def thread_step_inst (OO000OOOO0O0OO000 ):#line:283
206
- pass #line:284
207
- def adjustStackFrame (OOO00OOOOO000000O ):#line:287
208
- OOO00OOOOO000000O .SetAsync (True )#line:298
209
- O00O00OOO000O0O00 =OOO00OOOOO000000O .GetSelectedTarget ().GetProcess ().GetSelectedThread ()#line:303
210
- O0O000OOOO000OO00 =O00O00OOO000O0O00 .GetSelectedFrame ().GetFrameID ()#line:304
211
- OO000000OO0O00000 =lldb .debugger .GetCommandInterpreter ()#line:306
212
- O0O00OO00OOO0O0O0 =lldb .SBCommandReturnObject ()#line:307
213
- OO000000OO0O00000 .HandleCommand ("thread step-inst",O0O00OO00OOO0O0O0 )#line:311
214
- O00OOOOO000OOOOOO =O0O00OO00OOO0O0O0 .GetOutput ()#line:312
215
- OOOO0O0OO0O00000O =re .search ('error',O00OOOOO000OOOOOO )#line:313
216
- if OOOO0O0OO0O00000O !=None :#line:314
217
- return False #line:315
218
- time .sleep (0.5 )#line:317
219
- OO000000OO0O00000 .HandleCommand ("frame select "+str (O0O000OOOO000OO00 ),O0O00OO00OOO0O0O0 )#line:326
220
- O00OOOOO000OOOOOO =O0O00OO00OOO0O0O0 .GetOutput ()#line:327
221
- OOOO0O0OO0O00000O =re .search ('error',O00OOOOO000OOOOOO )#line:328
222
- if OOOO0O0OO0O00000O !=None :#line:330
223
- return False #line:331
224
- def clean (OO0OOO0000O00O0O0 ):#line:333
225
- OOO000000O00OOOO0 =os .listdir (OO0OOO0000O00O0O0 )#line:334
226
- for OOOO0OO0O000O00O0 in OOO000000O00OOOO0 :#line:335
227
- OO0O0OO00OO0000OO =os .path .join (OO0OOO0000O00O0O0 ,OOOO0OO0O000O00O0 )#line:336
228
- if os .path .isfile (OO0O0OO00OO0000OO ):#line:337
229
- os .remove (OO0O0OO00OO0000OO )#line:338
230
- elif os .path .isdir (OO0O0OO00OO0000OO ):#line:339
231
- shutil .rmtree (OO0O0OO00OO0000OO )#line:340
232
- pass #line:341
233
- def processing (O0O00O00O000O0O00 ):#line:351
234
- sys .stdout .write (O0O00O00O000O0O00 )#line:352
235
- sys .stdout .flush ()#line:353
236
- def start (O0OOO000O00OOO00O ,OOO00O0O00OOOO00O ):#line:355
237
- processing ("processing")#line:357
238
- processing (".")#line:360
239
- lz_log (1 )#line:362
240
- O0OOOOO00O00OOOO0 =get_debug_file_path (OOO00O0O00OOOO00O )#line:363
241
- if O0OOOOO00O00OOOO0 ==None or len (O0OOOOO00O00OOOO0 )==0 :#line:364
242
- lz_error (1 )#line:365
243
- return #line:366
244
- processing (".")#line:370
245
- lz_log (2 )#line:371
246
- O0O0000OO0OO0OO00 =get_inis_info (O0OOOOO00O00OOOO0 )#line:372
247
- if O0O0000OO0OO0OO00 [0 ]==None or O0O0000OO0OO0OO00 [1 ]==None and O0O0000OO0OO0OO00 [2 ]==None or O0O0000OO0OO0OO00 [3 ]==None :#line:373
248
- lz_error (2 )#line:374
249
- return #line:375
250
- processing (".")#line:378
251
- lz_log (3 )#line:379
252
- OOO00O0OO00O00000 =download_git_source_code (O0O0000OO0OO0OO00 [0 ],O0O0000OO0OO0OO00 [3 ])#line:380
253
- if OOO00O0OO00O00000 ==None or len (OOO00O0OO00O00000 )==0 :#line:381
254
- lz_error (3 )#line:382
255
- return #line:383
256
- processing (".")#line:386
257
- lz_log (4 )#line:387
258
- O0OO0O0O000O0O000 =change_source_code_commit (OOO00O0OO00O00000 )#line:388
259
- if O0OO0O0O000O0O000 ==False :#line:389
260
- lz_error (4 )#line:390
261
- return #line:391
262
- processing (".")#line:394
263
- lz_log (5 )#line:395
264
- O0OO0O0O000O0O000 =map_source_code (OOO00O0OO00O00000 ,O0OOOOO00O00OOOO0 ,O0O0000OO0OO0OO00 [2 ])#line:396
265
- if O0OO0O0O000O0O000 ==False :#line:397
266
- lz_error (5 )#line:398
267
- return #line:399
268
- print (".")#line:402
269
- lz_log (6 )#line:403
270
- O0OO0O0O000O0O000 =adjustStackFrame (O0OOO000O00OOO00O )#line:404
271
- if O0OO0O0O000O0O000 ==False :#line:405
272
- lz_error (6 )#line:406
273
- return #line:407
274
- def help ():#line:410
275
- print ("Usage:")#line:412
276
- print (" isource memory_address eg:isource 0x8badf00d")#line:413
277
- print ("Commands:")#line:415
278
- print (" + help command help")#line:416
279
- print (" + clean clean cache")#line:417
280
- pass #line:418
281
- def helloworld (OO0OOOO0O00O000O0 ,O00OO00O0O000O0OO ,OOOO0OOO0O00O0O0O ,OOOO0OO0OO000OOOO ):#line:421
282
- if O00OO00O0O000O0OO ==None or O00OO00O0O000O0OO =='-h':#line:423
283
- help ()#line:424
284
- elif O00OO00O0O000O0OO =='-c':#line:425
285
- clean (source_code_dir )#line:426
286
- elif re .match ('0x.*[a-z0-9]',O00OO00O0O000O0OO )!=None :#line:427
287
- start (OO0OOOO0O00O000O0 ,O00OO00O0O000O0OO )#line:428
288
- else :#line:429
289
- print ('error: '+O00OO00O0O000O0OO +' is not a valid command.')#line:430
290
- help ()#line:431
291
- def __lldb_init_module (O0OO00OO0OO0O0O00 ,O0000O0000OO00O0O ):#line:434
292
- manage_source_dir ()#line:436
293
- manage_job_inis ()#line:440
294
- O0OO00OO0OO0O0O00 .HandleCommand ("command script add -f isource_lldb.helloworld isource")#line:442
295
-
2
+ import lldb #line:5:import lldb
3
+ import os #line:6:import os
4
+ import re #line:7:import re
5
+ import time #line:8:import time
6
+ import datetime #line:9:import datetime
7
+ import queue #line:10:import queue
8
+ import shutil #line:11:import shutil
9
+ import threading #line:12:import threading
10
+ import sys #line:13:import sys
11
+ from threading import Thread #line:14:from threading import Thread
12
+ user_dir =os .path .expanduser ('~')#line:16:user_dir = os.path.expanduser('~')
13
+ source_lldb_dir =user_dir +"/.isource_lldb"#line:17:source_lldb_dir = user_dir + "/.isource_lldb"
14
+ source_code_dir =source_lldb_dir +"/source_code"#line:18:source_code_dir = source_lldb_dir + "/source_code"
15
+ drrr_job_inis_dir =source_lldb_dir +"/drrr_job_inis"#line:19:drrr_job_inis_dir = source_lldb_dir + "/drrr_job_inis"
16
+ drrr_job_inis_dir_modules =drrr_job_inis_dir +"/modules"#line:20:drrr_job_inis_dir_modules = drrr_job_inis_dir + "/modules"
17
+ drrr_job_inis_addr ='ssh://git@gitlab.qiyi.domain:10022/qytools/drrr_job_inis.git'#line:21:drrr_job_inis_addr = 'ssh://git@gitlab.qiyi.domain:10022/qytools/drrr_job_inis.git'
18
+ project_info_cache =source_lldb_dir +"/project_info_cache.txt"#line:22:project_info_cache = source_lldb_dir + "/project_info_cache.txt"
19
+ def lz_error (O0OO0O000000OOO00 ):#line:24:def lz_error(reason_t):
20
+ print ("internal error code : "+str (O0OO0O000000OOO00 ))#line:25:print("internal error code : " + str(reason_t))
21
+ def lz_log (O0OOO0O00O0OOO000 ):#line:27:def lz_log(reason_t):
22
+ pass #line:30:pass
23
+ def manage_source_dir ():#line:33:def manage_source_dir():
24
+ OOOO0O000000OOO0O =os .path .exists (source_lldb_dir )#line:34:source_lldb_dir_isExists = os.path.exists(source_lldb_dir)
25
+ if not OOOO0O000000OOO0O :#line:35:if not source_lldb_dir_isExists:
26
+ os .makedirs (source_lldb_dir )#line:36:os.makedirs(source_lldb_dir)
27
+ os .makedirs (source_code_dir )#line:37:os.makedirs(source_code_dir)
28
+ else :#line:38:else:
29
+ OOOO00OO0000O0O0O =os .path .exists (source_code_dir )#line:39:source_code_dir_isExists = os.path.exists(source_code_dir)
30
+ if not OOOO00OO0000O0O0O :#line:40:if not source_code_dir_isExists:
31
+ os .makedirs (source_code_dir )#line:41:os.makedirs(source_code_dir)
32
+ def create_cache_file ():#line:44:def create_cache_file():
33
+ O000000O0000OO00O =os .path .exists (project_info_cache )#line:45:project_info_cache_isExists = os.path.exists(project_info_cache)
34
+ if not O000000O0000OO00O :#line:46:if not project_info_cache_isExists:
35
+ O000OOO0OO0OOO0OO =open (project_info_cache ,'w')#line:47:file = open(project_info_cache,'w')
36
+ O000OOO0OO0OOO0OO .close ()#line:48:file.close()
37
+ def write_cache_file (O00O00000O000000O ):#line:50:def write_cache_file(params):
38
+ if O00O00000O000000O [0 ]!=None and O00O00000O000000O [1 ]!=None and O00O00000O000000O [2 ]!=None and O00O00000O000000O [3 ]!=None :#line:51:if params[0] != None and params[1] != None and params[2] != None and params[3] != None :
39
+ O0OO0OOOO00O0O0OO =list (O00O00000O000000O )#line:52:temp = list(params)
40
+ OOOO0OO0OO0OOO00O ='---'.join (O0OO0OOOO00O0O0OO )#line:53:resutl = '---'.join(temp)
41
+ O0O0O0O0O000OO00O =open (project_info_cache ,'a+')#line:54:file = open(project_info_cache,'a+')
42
+ O0O0O0O0O000OO00O .write (OOOO0OO0OO0OOO00O +"\n")#line:55:file.write(resutl+"\n")
43
+ O0O0O0O0O000OO00O .close ()#line:56:file.close()
44
+ def read_cache_file (O00O00OOOO00O0OO0 ):#line:58:def read_cache_file(project_name):
45
+ OOO0OOOOOOO00OOOO =None #line:59:project_info = None
46
+ with open (project_info_cache ,'r',encoding ='utf-8')as O00OO00OO00OO00OO :#line:60:with open(project_info_cache,'r',encoding='utf-8') as f:
47
+ O000O0OOOOOO00O0O =O00OO00OO00OO00OO .readlines ()#line:61:content_lines = f.readlines()
48
+ for OOOO0000000O0OO0O in range (0 ,len (O000O0OOOOOO00O0O )):#line:62:for i in range(0, len(content_lines)):
49
+ O0OOOO000OO0O00OO =re .search (O00O00OOOO00O0OO0 ,O000O0OOOOOO00O0O [OOOO0000000O0OO0O ])#line:63:result = re.search(project_name, content_lines[i])
50
+ if O0OOOO000OO0O00OO !=None :#line:64:if result != None:
51
+ OOOOOO0OO000OOOO0 =O000O0OOOOOO00O0O [OOOO0000000O0OO0O ]#line:65:content_lines_temp = content_lines[i]
52
+ OOOOO00O0O0O0OOOO =OOOOOO0OO000OOOO0 .split ('---')#line:66:infos = content_lines_temp.split('---')
53
+ OOO0OOOOOOO00OOOO =tuple (OOOOO00O0O0O0OOOO )#line:67:project_info = tuple(infos)
54
+ break #line:68:break
55
+ return OOO0OOOOOOO00OOOO #line:69:return project_info
56
+ def manage_job_inis ():#line:72:def manage_job_inis():
57
+ OO000O0OO00OOO0OO =os .path .exists (drrr_job_inis_dir )#line:73:drrr_job_inis_dir_isExists = os.path.exists(drrr_job_inis_dir)
58
+ if OO000O0OO00OOO0OO ==True :#line:74:if drrr_job_inis_dir_isExists == True:
59
+ OOOO000O0000OOO0O ="cd "+drrr_job_inis_dir +"; git pull"#line:75:update = "cd " + drrr_job_inis_dir + "; git pull"
60
+ O0O000OOO0O0O0O00 =os .popen (OOOO000O0000OOO0O )#line:76:result = os.popen(update)
61
+ OO00OO0OOO0O000O0 =O0O000OOO0O0O0O00 .read ()#line:77:content = result.read()
62
+ O0OOOO0O0OO000O00 =re .search ("fatal",OO00OO0OOO0O000O0 )#line:78:fatal = re.search("fatal", content)
63
+ if O0OOOO0O0OO000O00 !=None :#line:79:if fatal != None:
64
+ lz_error (0 )#line:80:lz_error(0)
65
+ else :#line:81:else:
66
+ OOOOOO0OO0O000OOO ="git clone "+drrr_job_inis_addr +" "+drrr_job_inis_dir #line:82:dowmload = "git clone "+ drrr_job_inis_addr +" "+ drrr_job_inis_dir
67
+ O0O000OOO0O0O0O00 =os .popen (OOOOOO0OO0O000OOO )#line:83:result = os.popen(dowmload)
68
+ OO00OO0OOO0O000O0 =O0O000OOO0O0O0O00 .read ()#line:84:content = result.read()
69
+ O0OOOO0O0OO000O00 =re .search ("fatal",OO00OO0OOO0O000O0 )#line:85:fatal = re.search("fatal", content)
70
+ if O0OOOO0O0OO000O00 !=None :#line:86:if fatal != None:
71
+ lz_error (0 )#line:87:lz_error(0)
72
+ def get_debug_file_path (OOOO000000OO000OO ):#line:90:def get_debug_file_path(command_t):
73
+ O00O00O000OO0O00O =lldb .debugger .GetCommandInterpreter ()#line:91:interpreter = lldb.debugger.GetCommandInterpreter()
74
+ OOOO0O0OO000OOO0O =lldb .SBCommandReturnObject ()#line:92:returnObject = lldb.SBCommandReturnObject()
75
+ O00O00O000OO0O00O .HandleCommand ('image lookup -v --address '+OOOO000000OO000OO ,OOOO0O0OO000OOO0O )#line:93:interpreter.HandleCommand('image lookup -v --address ' + command_t, returnObject)
76
+ OO0OO0O0O0O00O0O0 =OOOO0O0OO000OOO0O .GetOutput ()#line:94:output = returnObject.GetOutput()
77
+ O00OOOOOO00O0OOO0 =""#line:96:debug_file_path = ""
78
+ O00O00O00O0O0O0OO =re .search ('error',OO0OO0O0O0O00O0O0 )#line:97:result = re.search('error', output)
79
+ if O00O00O00O0O0O0OO !=None :#line:98:if result != None:
80
+ return O00OOOOOO00O0OOO0 #line:99:return debug_file_path
81
+ OO000OO0OO000OOOO =OO0OO0O0O0O00O0O0 .split ("\n")#line:102:str_to_array = output.split("\n")
82
+ if len (OO000OO0OO000OOOO )>3 :#line:103:if len(str_to_array)>3:
83
+ O0OOO0OOO00O0O0O0 =OO000OO0OO000OOOO [3 ].strip ()#line:104:unit_str = str_to_array[3].strip()
84
+ OOO0O00000OO000OO =O0OOO0OOO00O0O0O0 .split (",")#line:106:file_array = unit_str.split(",")
85
+ if len (OOO0O00000OO000OO )>1 :#line:107:if len(file_array)>1:
86
+ OOOOO00OOOOOOO0O0 =OOO0O00000OO000OO [1 ].strip ()#line:108:file = file_array[1].strip()
87
+ O0O000000O0000OOO =OOOOO00OOOOOOO0O0 .split ("=")#line:110:name_array = file.split("=")
88
+ if len (O0O000000O0000OOO )>1 :#line:111:if len(name_array)>1:
89
+ OO0OOOOOOO0OOOOO0 =O0O000000O0000OOO [1 ].strip ()#line:112:name = name_array[1].strip()
90
+ O00OOOOOO00O0OOO0 =OO0OOOOOOO0OOOOO0 .replace ('\"','')#line:114:debug_file_path = name.replace('\"','')
91
+ return O00OOOOOO00O0OOO0 #line:116:return debug_file_path
92
+ def get_inis_info (OO00O00O0O00OO00O ):#line:119:def get_inis_info(debug_file_path):
93
+ O0O000OOOO00O00OO =None #line:121:project_name_t = None
94
+ OO00000OOO0O00OOO =None #line:122:source_path_t = None
95
+ O00OOO0000OO00OOO =None #line:123:match_inis_name = None
96
+ OOO00O00O0OO0OO00 =None #line:124:source_code_address = None
97
+ O0O00O0OO0O0000OO =OO00O00O0O00OO00O .split ("/")#line:127:paths = debug_file_path.split("/")
98
+ for OOO00000OOOOOO0OO in range (0 ,len (O0O00O0OO0O0000OO )):#line:128:for i in range(0, len(paths)):
99
+ if O0O00O0OO0O0000OO [OOO00000OOOOOO0OO ]=="MODULE_DIR":#line:129:if paths[i] == "MODULE_DIR":
100
+ OO00000OOO0O00OOO =O0O00O0OO0O0000OO [OOO00000OOOOOO0OO +1 ]#line:130:source_path_t = paths[i+1]
101
+ O0O000OOOO00O00OO =O0O00O0OO0O0000OO [OOO00000OOOOOO0OO +1 ]#line:131:project_name_t = paths[i+1]
102
+ break #line:132:break
103
+ if OO00000OOO0O00OOO !=None and len (OO00000OOO0O00OOO )>0 :#line:139:if source_path_t != None and len(source_path_t) > 0 :
104
+ OOOOOOOOOO0O0OO0O =os .listdir (drrr_job_inis_dir_modules )#line:140:job_inis_list = os.listdir(drrr_job_inis_dir_modules)
105
+ for OOO00000OOOOOO0OO in range (0 ,len (OOOOOOOOOO0O0OO0O )):#line:141:for i in range(0, len(job_inis_list)):
106
+ O0OOOOO0OO00O0O00 =drrr_job_inis_dir_modules +"/"+OOOOOOOOOO0O0OO0O [OOO00000OOOOOO0OO ]#line:142:job_inis_dir_t = drrr_job_inis_dir_modules + "/" + job_inis_list[i]
107
+ with open (O0OOOOO0OO00O0O00 ,'r',encoding ='utf-8')as OO000O0000O000O0O :#line:144:with open(job_inis_dir_t,'r',encoding='utf-8') as f:
108
+ O0O00OO00OO00OO00 =OO000O0000O000O0O .readlines ()#line:145:content_lines = f.readlines()
109
+ for OOO00000OOOOOO0OO in range (0 ,len (O0O00OO00OO00OO00 )):#line:146:for i in range(0, len(content_lines)):
110
+ OO000O0O00000OOO0 =re .search (OO00000OOO0O00OOO ,O0O00OO00OO00OO00 [OOO00000OOOOOO0OO ])#line:147:result = re.search(source_path_t, content_lines[i])
111
+ if OO000O0O00000OOO0 !=None :#line:148:if result != None:
112
+ O00OOO0000OO00OOO =OOOOOOOOOO0O0OO0O [OOO00000OOOOOO0OO ]#line:149:match_inis_name = job_inis_list[i]
113
+ OOOOO0000OO00OO0O =OOO00000OOOOOO0OO -5 if OOO00000OOOOOO0OO >5 else 0 #line:150:start = i - 5 if i > 5 else 0
114
+ OO0000OOOO000OOO0 =OOO00000OOOOOO0OO +5 if OOO00000OOOOOO0OO +5 <len (O0O00OO00OO00OO00 )else len (O0O00OO00OO00OO00 )#line:151:end = i + 5 if i + 5 < len(content_lines) else len(content_lines)
115
+ for O0OO0OO000O000O0O in range (OOOOO0000OO00OO0O ,OO0000OOOO000OOO0 ):#line:152:for j in range(start, end):
116
+ O0O0O0O0OO00O0OOO =re .findall ("ssh://git@gitlab.qiyi.domain:[^/]+?/.*?"+O0O000OOOO00O00OO +"*?[^0~9]?.git",O0O00OO00OO00OO00 [O0OO0OO000O000O0O ])#line:153:result_t = re.findall("ssh://git@gitlab.qiyi.domain:[^/]+?/.*?"+project_name_t+"*?[^0~9]?.git",content_lines[j])
117
+ if len (O0O0O0O0OO00O0OOO )>0 :#line:154:if len(result_t) > 0 :
118
+ OOO00O00O0OO0OO00 =O0O0O0O0OO00O0OOO [0 ]#line:155:source_code_address = result_t[0]
119
+ break #line:156:break
120
+ if OOO00O00O0OO0OO00 !=None :#line:157:if source_code_address != None:
121
+ break #line:158:break
122
+ if OOO00O00O0OO0OO00 !=None :#line:159:if source_code_address != None:
123
+ break #line:160:break
124
+ return (O0O000OOOO00O00OO ,OOO00O00O0OO0OO00 )#line:179:return (project_name_t,source_code_address)
125
+ def download_git_source_code (OO00000O000O000OO ,OOOO00OOO0O00OOO0 ):#line:183:def download_git_source_code(p_name,git_address):
126
+ OOOOO0O0OOOOOO000 =source_code_dir +"/"+OO00000O000O000OO #line:184:project_dir = source_code_dir + "/" + p_name
127
+ O0O000O00OO0OOO00 =os .path .exists (OOOOO0O0OOOOOO000 )#line:185:project_dir_isExists = os.path.exists(project_dir)
128
+ if not O0O000O00OO0OOO00 :#line:187:if not project_dir_isExists:
129
+ os .makedirs (OOOOO0O0OOOOOO000 )#line:188:os.makedirs(project_dir)
130
+ O0O0O0O0OOO0OOO0O ="git clone "+OOOO00OOO0O00OOO0 +" "+OOOOO0O0OOOOOO000 #line:189:dowmload = "git clone "+ git_address +" " + project_dir
131
+ OO0OO00O0O0OOO0OO =os .popen (O0O0O0O0OOO0OOO0O )#line:190:result = os.popen(dowmload)
132
+ OOOO00O0OOOOO0OO0 =OO0OO00O0O0OOO0OO .read ()#line:191:content = result.read()
133
+ O0OOOOOOOO0O0000O =re .search ("fatal",OOOO00O0OOOOO0OO0 )#line:192:fatal = re.search("fatal", content)
134
+ if O0OOOOOOOO0O0000O !=None :#line:193:if fatal != None:
135
+ return ""#line:194:return ""
136
+ else :#line:195:else:
137
+ OOOO0OOO0O0O00O00 ="cd "+OOOOO0O0OOOOOO000 +"; git pull"#line:196:update = "cd " + project_dir + "; git pull"
138
+ OO0OO00O0O0OOO0OO =os .popen (OOOO0OOO0O0O00O00 )#line:197:result = os.popen(update)
139
+ OOOO00O0OOOOO0OO0 =OO0OO00O0O0OOO0OO .read ()#line:198:content = result.read()
140
+ O0OOOOOOOO0O0000O =re .search ("fatal",OOOO00O0OOOOO0OO0 )#line:199:fatal = re.search("fatal", content)
141
+ if O0OOOOOOOO0O0000O !=None :#line:200:if fatal != None:
142
+ return ""#line:201:return ""
143
+ return OOOOO0O0OOOOOO000 #line:203:return project_dir
144
+ def get_update_time ():#line:206:def get_update_time():
145
+ OO0O0OO0O0OO0OOO0 =user_dir +"/.cocoapods/repos/qiyi-podspecs/"#line:208:specs_dir = user_dir + "/.cocoapods/repos/qiyi-podspecs/"
146
+ O0000O000000O0OOO =os .path .getmtime (OO0O0OO0O0OO0OOO0 )#line:209:timestamp = os.path.getmtime(specs_dir)
147
+ O0OOO0000O00OO0O0 =time .localtime (O0000O000000O0OOO )#line:210:timeStruct = time.localtime(timestamp)
148
+ OOOO0OO00OOO0OO0O =time .strftime ("%m %d %H:%M:%S %Y",O0OOO0000O00OO0O0 )#line:213:time_str = time.strftime("%m %d %H:%M:%S %Y",timeStruct)
149
+ OOO0O00OO0OOO0OO0 =OOOO0OO00OOO0OO0O .split (" ")#line:214:file_array = time_str.split(" ")
150
+ O0O0OOO0O0O0000OO =OOO0O00OO0OOO0OO0 [0 ]#line:215:month = file_array[0]
151
+ if O0O0OOO0O0O0000OO =='1':#line:217:if month == '1':
152
+ O0O0OOO0O0O0000OO ='Jan'#line:218:month = 'Jan'
153
+ if O0O0OOO0O0O0000OO =='2':#line:219:if month == '2':
154
+ O0O0OOO0O0O0000OO ='Feb'#line:220:month = 'Feb'
155
+ if O0O0OOO0O0O0000OO =='3':#line:221:if month == '3':
156
+ O0O0OOO0O0O0000OO ='Mar'#line:222:month = 'Mar'
157
+ if O0O0OOO0O0O0000OO =='4':#line:223:if month == '4':
158
+ O0O0OOO0O0O0000OO ='Apr'#line:224:month = 'Apr'
159
+ if O0O0OOO0O0O0000OO =='5':#line:225:if month == '5':
160
+ O0O0OOO0O0O0000OO ='May'#line:226:month = 'May'
161
+ if O0O0OOO0O0O0000OO =='6':#line:227:if month == '6':
162
+ O0O0OOO0O0O0000OO ='Jun'#line:228:month = 'Jun'
163
+ if O0O0OOO0O0O0000OO =='7':#line:229:if month == '7':
164
+ O0O0OOO0O0O0000OO ='Jul'#line:230:month = 'Jul'
165
+ if O0O0OOO0O0O0000OO =='8':#line:231:if month == '8':
166
+ O0O0OOO0O0O0000OO ='Aug'#line:232:month = 'Aug'
167
+ if O0O0OOO0O0O0000OO =='9':#line:233:if month == '9':
168
+ O0O0OOO0O0O0000OO ='Sep'#line:234:month = 'Sep'
169
+ if O0O0OOO0O0O0000OO =='10':#line:235:if month == '10':
170
+ O0O0OOO0O0O0000OO ='Oct'#line:236:month = 'Oct'
171
+ if O0O0OOO0O0O0000OO =='11':#line:237:if month == '11':
172
+ O0O0OOO0O0O0000OO ='Nov'#line:238:month = 'Nov'
173
+ if O0O0OOO0O0O0000OO =='12':#line:239:if month == '12':
174
+ O0O0OOO0O0O0000OO ='Dec'#line:240:month = 'Dec'
175
+ OOO0O00OO0OOO0OO0 [0 ]=O0O0OOO0O0O0000OO #line:242:file_array[0] = month
176
+ return ' '.join (OOO0O00OO0OOO0OO0 )#line:244:return ' '.join(file_array)
177
+ def change_source_code_commit (O0O0O0OO0OO0OO0OO ):#line:247:def change_source_code_commit(source_code_path_t):
178
+ OO0OOOOOOOOO000OO =get_update_time ()#line:250:last_update_time = get_update_time()
179
+ OO000OOO0000OOOOO ="cd "+O0O0O0OO0OO0OO0OO +"; git rev-list -n 1 --before=\""+OO0OOOOOOOOO000OO +"\" master"#line:252:update = "cd " + source_code_path_t + "; git rev-list -n 1 --before=\""+ last_update_time +"\" master"
180
+ OO000OOO000OO0000 =os .popen (OO000OOO0000OOOOO )#line:253:result = os.popen(update)
181
+ OO00OOO0000O0OOO0 =OO000OOO000OO0000 .read ()#line:254:content = result.read()
182
+ O00O00OOO00O0000O =re .search ("fatal",OO00OOO0000O0OOO0 )#line:255:fatal = re.search("fatal", content)
183
+ if O00O00OOO00O0000O !=None :#line:256:if fatal != None:
184
+ return False #line:257:return False
185
+ else :#line:258:else:
186
+ return True #line:259:return True
187
+ def checkError (O0O00OOOOOOOO0000 ,OOOOOO0O000000OOO ):#line:261:def checkError(result,keywords):
188
+ OO00O0O00O00O000O =re .search (OOOOOO0O000000OOO ,O0O00OOOOOOOO0000 )#line:262:flag = re.search(keywords, result)
189
+ if OO00O0O00O00O000O ==None :#line:263:if flag == None :
190
+ return True #line:264:return True
191
+ else :#line:265:else:
192
+ return False #line:266:return False
193
+ def map_source_code (OO00OO00O0O00O000 ,OO00O0O00O0O0000O ,O00O0OOO000000OO0 ):#line:269:def map_source_code(source_code_path_t,debug_code_path_t,reveal_path_t):
194
+ OO0000000OOOOO0OO =OO00O0O00O0O0000O .split (O00O0OOO000000OO0 )#line:270:paths_t = debug_code_path_t.split(reveal_path_t)
195
+ OO00O0O0O0O0O0OO0 =OO0000000OOOOO0OO [0 ]#line:271:debug_t = paths_t[0]
196
+ OO0O0OO0O0OO0O000 =lldb .debugger .GetCommandInterpreter ()#line:272:interpreter = lldb.debugger.GetCommandInterpreter()
197
+ OOO000OO0O0O0000O =lldb .SBCommandReturnObject ()#line:273:returnObject = lldb.SBCommandReturnObject()
198
+ OO0O0OO0O0OO0O000 .HandleCommand ("settings append target.source-map "+OO00O0O0O0O0O0OO0 +" "+OO00OO00O0O00O000 ,OOO000OO0O0O0000O )#line:274:interpreter.HandleCommand("settings append target.source-map "+ debug_t +" " + source_code_path_t,returnObject)
199
+ OOOO00OO0OOOO00OO =OOO000OO0O0O0000O .GetOutput ()#line:275:output = returnObject.GetOutput()
200
+ O00OO0OOO0OOOO00O =re .search ('error',OOOO00OO0OOOO00OO )#line:276:flag = re.search('error', output)
201
+ if O00OO0OOO0OOOO00O ==None :#line:277:if flag == None :
202
+ return True #line:278:return True
203
+ else :#line:279:else:
204
+ return False #line:280:return False
205
+ def thread_step_inst (O0OO0O0OOO00OOOO0 ):#line:283:def thread_step_inst(tmep):
206
+ pass #line:284:pass
207
+ def adjustStackFrame (OO0O0OO00OOOO00OO ):#line:287:def adjustStackFrame(debugger):
208
+ OO0O0OO00OOOO00OO .SetAsync (True )#line:298:debugger.SetAsync(True)
209
+ OOO00O0OO00OOO0O0 =OO0O0OO00OOOO00OO .GetSelectedTarget ().GetProcess ().GetSelectedThread ()#line:303:thread = debugger.GetSelectedTarget().GetProcess().GetSelectedThread()
210
+ O00O0000O0OO0OO00 =OOO00O0OO00OOO0O0 .GetSelectedFrame ().GetFrameID ()#line:304:frame_num = thread.GetSelectedFrame().GetFrameID()
211
+ OO0000O00OO0O000O =lldb .debugger .GetCommandInterpreter ()#line:306:interpreter = lldb.debugger.GetCommandInterpreter()
212
+ O00OOO000O00O000O =lldb .SBCommandReturnObject ()#line:307:returnObject = lldb.SBCommandReturnObject()
213
+ OO0000O00OO0O000O .HandleCommand ("thread step-inst",O00OOO000O00O000O )#line:311:interpreter.HandleCommand("thread step-inst",returnObject)
214
+ OOO00OO0O00O000OO =O00OOO000O00O000O .GetOutput ()#line:312:output = returnObject.GetOutput()
215
+ O00OOO000O0OO00O0 =re .search ('error',OOO00OO0O00O000OO )#line:313:result = re.search('error', output)
216
+ if O00OOO000O0OO00O0 !=None :#line:314:if result != None:
217
+ return False #line:315:return False
218
+ time .sleep (0.5 )#line:317:time.sleep(0.5)
219
+ OO0000O00OO0O000O .HandleCommand ("frame select "+str (O00O0000O0OO0OO00 ),O00OOO000O00O000O )#line:326:interpreter.HandleCommand("frame select "+str(frame_num),returnObject)
220
+ OOO00OO0O00O000OO =O00OOO000O00O000O .GetOutput ()#line:327:output = returnObject.GetOutput()
221
+ O00OOO000O0OO00O0 =re .search ('error',OOO00OO0O00O000OO )#line:328:result = re.search('error', output)
222
+ if O00OOO000O0OO00O0 !=None :#line:330:if result != None:
223
+ return False #line:331:return False
224
+ def clean (OO00O0O0O000O0OOO ):#line:333:def clean(filepath):
225
+ O0O00OOO0OO00OOOO =os .listdir (OO00O0O0O000O0OOO )#line:334:del_list = os.listdir(filepath)
226
+ for O00OOOOOO0OO00OOO in O0O00OOO0OO00OOOO :#line:335:for f in del_list:
227
+ OO00O0O00O000O0O0 =os .path .join (OO00O0O0O000O0OOO ,O00OOOOOO0OO00OOO )#line:336:file_path = os.path.join(filepath, f)
228
+ if os .path .isfile (OO00O0O00O000O0O0 ):#line:337:if os.path.isfile(file_path):
229
+ os .remove (OO00O0O00O000O0O0 )#line:338:os.remove(file_path)
230
+ elif os .path .isdir (OO00O0O00O000O0O0 ):#line:339:elif os.path.isdir(file_path):
231
+ shutil .rmtree (OO00O0O00O000O0O0 )#line:340:shutil.rmtree(file_path)
232
+ pass #line:341:pass
233
+ def processing (O0OO0O000OOO0O0OO ):#line:351:def processing(temp):
234
+ sys .stdout .write (O0OO0O000OOO0O0OO )#line:352:sys.stdout.write(temp)
235
+ sys .stdout .flush ()#line:353:sys.stdout.flush()
236
+ def start (OOO0OO0000OO0O0O0 ,O000000O000000000 ):#line:355:def start(debugger,command):
237
+ processing ("processing")#line:357:processing("processing")
238
+ processing (".")#line:360:processing(".")
239
+ lz_log (1 )#line:363:lz_log(1)
240
+ O0000O0000OO00O0O =get_debug_file_path (O000000O000000000 )#line:364:debug_file_path = get_debug_file_path(command)
241
+ lz_log (O0000O0000OO00O0O )#line:365:lz_log(debug_file_path)
242
+ if O0000O0000OO00O0O ==None or len (O0000O0000OO00O0O )==0 :#line:366:if debug_file_path == None or len(debug_file_path) == 0:
243
+ lz_error (1 )#line:367:lz_error(1)
244
+ return #line:368:return
245
+ processing (".")#line:373:processing(".")
246
+ lz_log (2 )#line:374:lz_log(2)
247
+ O00OOO0O0OO00O0O0 =get_inis_info (O0000O0000OO00O0O )#line:375:project_info = get_inis_info(debug_file_path)
248
+ lz_log (O00OOO0O0OO00O0O0 )#line:376:lz_log(project_info)
249
+ if O00OOO0O0OO00O0O0 [0 ]==None or O00OOO0O0OO00O0O0 [1 ]==None :#line:377:if project_info[0] == None or project_info[1] == None:
250
+ lz_error (2 )#line:378:lz_error(2)
251
+ return #line:379:return
252
+ processing (".")#line:383:processing(".")
253
+ lz_log (3 )#line:384:lz_log(3)
254
+ OO0OOOOO000O0000O =download_git_source_code (O00OOO0O0OO00O0O0 [0 ],O00OOO0O0OO00O0O0 [1 ])#line:385:source_code_path = download_git_source_code(project_info[0],project_info[1])
255
+ lz_log (OO0OOOOO000O0000O )#line:386:lz_log(source_code_path)
256
+ if OO0OOOOO000O0000O ==None or len (OO0OOOOO000O0000O )==0 :#line:387:if source_code_path == None or len(source_code_path) == 0:
257
+ lz_error (3 )#line:388:lz_error(3)
258
+ return #line:389:return
259
+ processing (".")#line:393:processing(".")
260
+ lz_log (4 )#line:394:lz_log(4)
261
+ OOOO0O00OO0O00OO0 =change_source_code_commit (OO0OOOOO000O0000O )#line:395:isSuccess = change_source_code_commit(source_code_path)
262
+ lz_log (OOOO0O00OO0O00OO0 )#line:396:lz_log(isSuccess)
263
+ if OOOO0O00OO0O00OO0 ==False :#line:397:if isSuccess == False:
264
+ lz_error (4 )#line:398:lz_error(4)
265
+ return #line:399:return
266
+ processing (".")#line:403:processing(".")
267
+ lz_log (5 )#line:404:lz_log(5)
268
+ OOOO0O00OO0O00OO0 =map_source_code (OO0OOOOO000O0000O ,O0000O0000OO00O0O ,O00OOO0O0OO00O0O0 [0 ])#line:405:isSuccess = map_source_code(source_code_path,debug_file_path,project_info[0])
269
+ lz_log (OOOO0O00OO0O00OO0 )#line:406:lz_log(isSuccess)
270
+ if OOOO0O00OO0O00OO0 ==False :#line:407:if isSuccess == False:
271
+ lz_error (5 )#line:408:lz_error(5)
272
+ return #line:409:return
273
+ print (".")#line:413:print(".")
274
+ lz_log (6 )#line:414:lz_log(6)
275
+ OOOO0O00OO0O00OO0 =adjustStackFrame (OOO0OO0000OO0O0O0 )#line:415:isSuccess = adjustStackFrame(debugger)
276
+ lz_log (OOOO0O00OO0O00OO0 )#line:416:lz_log(isSuccess)
277
+ if OOOO0O00OO0O00OO0 ==False :#line:417:if isSuccess == False:
278
+ lz_error (6 )#line:418:lz_error(6)
279
+ return #line:419:return
280
+ def help ():#line:422:def help():
281
+ print ("Usage:")#line:424:print("Usage:")
282
+ print (" isource memory_address eg:isource 0x8badf00d")#line:425:print(" isource memory_address eg:isource 0x8badf00d")
283
+ print ("Commands:")#line:427:print("Commands:")
284
+ print (" + help command help")#line:428:print(" + help command help")
285
+ print (" + clean clean cache")#line:429:print(" + clean clean cache")
286
+ pass #line:430:pass
287
+ def helloworld (O0O0000O000000OO0 ,OOO0OOO0O0O0OO0O0 ,O00000O0O0OOO0OO0 ,OOO0O0O000OOOO000 ):#line:433:def helloworld(debugger, command, result, internal_dict):
288
+ if OOO0OOO0O0O0OO0O0 ==None or OOO0OOO0O0O0OO0O0 =='-h':#line:435:if command == None or command == '-h':
289
+ help ()#line:436:help()
290
+ elif OOO0OOO0O0O0OO0O0 =='-c':#line:437:elif command == '-c':
291
+ clean (source_code_dir )#line:438:clean(source_code_dir)
292
+ elif re .match ('0x.*[a-z0-9]',OOO0OOO0O0O0OO0O0 )!=None :#line:439:elif re.match('0x.*[a-z0-9]', command) != None :
293
+ start (O0O0000O000000OO0 ,OOO0OOO0O0O0OO0O0 )#line:440:start(debugger,command)
294
+ else :#line:441:else:
295
+ print ('error: '+OOO0OOO0O0O0OO0O0 +' is not a valid command.')#line:442:print('error: ' + command +' is not a valid command.')
296
+ help ()#line:443:help()
297
+ def __O0O000O0OOOO0O0O0 (O000O0OO0OOOOOOO0 ,O00OOO00OO000O0OO ):#line:446:def __lldb_init_module(debugger, internal_dict):
298
+ manage_source_dir ()#line:448:manage_source_dir()
299
+ manage_job_inis ()#line:452:manage_job_inis()
300
+ O000O0OO0OOOOOOO0 .HandleCommand ("command script add -f isource_lldb.helloworld isource")#line:454:debugger.HandleCommand("command script add -f isource_lldb.helloworld isource")
301
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isource_lldb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ningyuan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-04 00:00:00.000000000 Z
11
+ date: 2021-06-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An plugin of LLDB.
14
14
  email: