-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gdbinit
697 lines (605 loc) · 8.48 KB
/
.gdbinit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
#
##
### GDB Settings
##
#
set prompt (zdb)
set editing on
# set verbose on
set tui border-kind acs
set tui active-border-mode bold-standout
set tui border-mode reverse
set trace-commands on
set logging enabled on
set follow-fork-mode child
# set detach-on-fork off
show follow-fork-mode
set print pretty on
# set print elements 2
set print array on
#
skip -gfi *libreadline.so.8
#
##
### Custom Commands
##
#
define xx
kill
exit
end
### 000_main.c
define main
display argc
display *argv@argc
display *envp
end
define sh_loop
display *sh
display line_buf
display status
p_cmds
end
### 010_init.c
define init
display *sh
display *envp
end
define init_env
display *env
display env[n]
display *new_env
display n
end
### 200_tokenizer.c
define tokenizer
display *sh
display *line
display **tks
display *tk
end
define get_tkns
display line
display **tks
display (*tks)->name
display tmp
display tk
display tk.tkn[0]
display tkn_str
end
define get_tk
display tk
display tk[i]
display *ops[i]
display ops[i]->tkn
display ret
display i
end
define p_tk
print tk
set $node = tk
while ($node != 0)
print *$node
set $node = $node->next
end
end
define p_tks
print tks
set $node = tks
while ($node != 0)
print *$node
set $node = $node->next
end
end
define p_cmds
print *sh->cmds->argv@sh->cmds->argc
end
# 210_tk_list.c
define tk_new
display line
display type
display len
display tk
display *tk
end
define tk_add
display *tk_list
display tk
display curr
display *curr
end
define ft_add_tk_free
display tk
end
define tk_last
display tk
end
# 220_tk_expander.c
define expander
display tkn
display tkn[i]
display tkn_start
display *list
display i
end
define expand_dollar
display tkn
display *i
display tkn[*i - 2]
display tkn[*i - 1]
display tkn[*i]
display tkn[*i + 1]
display tkn_start
display ret
end
define expand_squote
display tkn
display tkn[i]
display i
display tkn_start
display *ret
end
define expand_dquote
display sub_tkns
display **sub_tkns@5
display tkn
display tkn[*i]
display *i
display start
displa *curr_tk
end
define expand_other
display sub_tkns
display (*sub_tkns)[(*curr_tk)]
display tkn
display *i
display tkn[*i]
display tkn_start
display tkn_len
end
# 230_tk_expander_init.c
define expander_init
display tkn_str
display tkn_str[i]
display sub_tkns
display *sub_tkns@n_tkns
display **sub_tkns
display n_tkns
display i
end
define expand_check_dollar
display tkn
display tkn[*i]
display *i
end
define expand_check_dquote
display tkn
display tkn[*i]
display *n_tkns
display *i
display dollar
end
define expand_check_other
display tkn
display tkn[*i]
display *i
end
### 240_tk_expander_var.c
define expand_var
display **sub_tkns@5
display sub_tkns
display *sub_tkns
display **sub_tkns
display ret
display curr
display i
display (*sub_tkns)[i]
end
define fill_var
display tkn
display tkn[i]
display var
display i
end
define unquote
display tkn
display ret
display len
display tkn[0]
display tkn[(len -1)]
end
### 300_parser.c
define parser
display *sh
display *line_buf
display *sh->cmds
end
define count_args
display *sh
display *tks
display *prev
display i
end
define count_cmds
display *tks
display count
end
define parse_cmds
display *tks
display *cmds
display *cmds->argv
display cmds[i].argv[j]
display i
display j
end
define expand_check_dollar
display tkn
display tkn[*i]
display *i
end
define check_syntax
display *tk
display exit
end
### 310_readline.c
define readline
display **line_buf
display *prompt
end
define build_cwd
display *cwd
display *ret
display i
display cwd_len
display home_len
end
define build_prompt
display sh->envp
display *ret
display *temp
display *cwd
display *pwd
end
define add_user_host
display *****sh
display sh->user
display sh->host
display prompt_len
display user_len
display ret
end
### 500_env.c
define get_var
display var
display *envp
display var2get
end
define extract_var
display select
display *envp
display tmp
display var
display *var
display len
end
### 510_env_set.c
define set_var
display *var
display *val
display ***env
display *new
display i
display (*env)[i]
end
define var_from_env
display *var
display **env
display len
display i
end
define env_add_var
display **env
display *new_var
display **new_var
display i
display env[i]
display new_var[i]
end
define env_del_var
display **env
display *to_del
display **new_env
display i
display j
display env[i]
display new_env[i]
end
### 520_build_var.c
define build_var
display *sh
display n
display i
display *sh->cmds[n].argv@sh->cmds[n].argc
display sh->cmds[n].argv[i]
end
define ft_append
display *cmd
display cmd->argv[i]
display i
end
define append_var
display *sh
display *sh->cmds[n].argv@sh->cmds[n].argc
display sh->cmds[n].argv[i]
display n
display i
display key
display new_val
display old_val
display plus_pos
display key_len
end
# 600_execute.c
define execute
display *sh
display *sh->path
display *sh->pipes
end
define split_path
display *envp
display *path
display to_split
display i
end
define path_from_env
display *envp
display envp[i]
display i
end
define exec_one
display *sh
display cmd
end
define exec_fork
display *sh
display pid
end
define exec
display *sh
display *cmd
display n
end
### 620_exec_one.c
define update_last_cmd
display *sh
display i
end
### 630_pipeline.c
define exec_pipeline
display *sh
display cmd_idx
end
define exec_first
display *sh
display pid
end
define exec_loop
display *sh
display **pipe
display *pipe0
display *pipe1
display cmd_i
display i
end
define exec_cmd_i
display *sh
display **pipe
display pipe[0]
display pipe[1]
display i
end
define exec_last
display *sh
display pid
display *inpipe
display i
end
# 640_exec_child.c
define exec_child_first
display sh->cmds[0].argv[0]
display sh->cmds[0].in.name
display sh->cmds[0].out.name
display sh->pipe
end
define exec_child_inner
display *cmd
display *cmd->argv@cmd->argc
end
# 670_pipes.c
define pipe_init
display **path
end
define pipe_setter
display *pipe
display end
display pipe[end]
end
define close_pipes
display *pipe0
display *pipe1
end
# 700_exit.c
define exit
display *cmd->argc
display *cmd->argv@3
display cmd->argv[1][0]
end
define ft_kill
display *sh
display sig
end
### 710_pwd.c
define pwd
display *pwd
display i
display sh->cmds[n].argv[0]
display sh->cmds[n].argv[i]
end
### 720_cd.c
define ft_cd
display *sh
display cmd_n
end
define chdir
display pwd
display *path
display chdir_ret
end
### 730_env.c
define env
display *sh
display n
display i
display *sh->cmds[n].argv@sh->cmds[n].argc
display sh->cmds[n].argv[i]
display sh->envp[i]
end
### 750_echo.c
define ft_echo
display cmd->argc
display cmd->argv@sh->cmds[i].argc
display cmd->argv[i]
display cmd->argv[i + 1]
end
define rm_squotes
display arg
display unquoted
display len
end
### 760_export.c
define export
display *sh
display i
display *cmd[i].argv@3
display cmd[i].argv[i]
end
define isvalid_var
display var
display var[i]
display i
end
define update_var
display *sh
display *key
display *value
display i
display cmd
end
define export_var
display *sh
display n
display i
display key
display value
display j
end
### 761_export_status.c
define export_status
display *sh
display n
display **sorted
display *sorted[i]
display *equal
display *(equal + 1)
display n
end
define sort_env
display **env
display n
display ret
display var_len
display next_len
display i
display j
display env[n]
display env[n + 1]
display env[i]
display env[j]
end
### 781_path_resolver.c
define path_resolve
display pwd
display path
display ret
display temp
end
define path_elems_final_size
display **elems
display i
display j
display elems[i]
end
define path_resolve_inner
display path
display ret
display *elems
display *final_elems
display final_size
end
### 900_free.c
define free
display *sh
display status
end
define free_tks
display **t k
display *tmp
display tk->name
display (*tk)->name
end
#
##
### Go GDB Go! I Choose YOU!
##
#
### 000_main.c
## main()
break main
run
main
fs cmd
rfr
## ft_init()
# break ft_init
# run
# init
# fs cmd
# rfr
## ft_init()
# break ft_init_env
# break 75
# run
# init_env
# fs cmd
# rfr
### 500_env.c
## ft_get_var()
# break ft_get_var
# run
# get_var
# fs cmd
# rfr
# ft_extract_var()
# break ft_extract_var
# run
# extract_var
# fs cmd
# rfr
# ft_exec_pipeline
# break ft_export
# run
# fs cmd
# rfr
### Info Stats
info break
info watch