lpcc
是一个用于转储已编译的 LPC 代码的命令行工具,它有助于理解 FluffOS 如何编译 LPC 代码。
使用方法
./lpcc config_file lpc_file
输出示例
$ .\lpcc.exe .\config.cfg .\cmds\test\test_tls.c
Processing config file: .\config.cfg
New Debug log location: "log/debug.log".
Execution root: .
Initializing internal stuff ....
Event backend in use: win32
WARNING: Platform doesn't support eval limit!
Loading simul_efun file : /adm/single/simul_efun
[Wed Jul 02 18:54:42 2025]CORE_SIMUL_EFUN_OB->create()!
simul_efun loaded successfully.
Loading master file: /adm/single/master
master_ob loaded successfully.
Loading preload files ...
/adm/daemons/securityd...
/adm/daemons/timed...
/adm/daemons/logind...
/adm/daemons/virtuald...
/adm/daemons/rankd...
/adm/daemons/commandd...
/adm/daemons/chinesed...
/adm/daemons/emoted...
/adm/daemons/aliasd...
/adm/daemons/fingerd...
/adm/daemons/channeld...
/adm/daemons/natured...
/adm/daemons/named...
/adm/daemons/punishd...
/adm/daemons/storyd...
/adm/daemons/eventd...
/adm/daemons/closed...
/adm/daemons/pkd...
/adm/daemons/memoryd...
/adm/daemons/messaged...
/adm/daemons/backupd...
/adm/daemons/mapd...
/adm/daemons/familyd...
/adm/daemons/questd...
/adm/daemons/cpud...
/adm/daemons/qq_d...
/adm/daemons/invasion/invasiond...
/adm/daemons/network/dns_master...
/adm/daemons/task/set_task...
NAME: /.\cmds\test\test_tls.c
INHERITS:
name fio vio
---------------- --- ---
feature/clean_up.c 0 0
mudcore/inherit/Http.c 1 0
FUNCTIONS:
name offset mods flags fio vio # locals # args # def args
------------------------- ------ ---- ------- --- --- -------- ------ ----------
0: clean_up 0 +-- i-s---- 0 0
1: socket_shutdown 1 --- i-s---- 0 0
2: response 0 --- --s-a-- 0 1 0
3: receive_data 1 --- i-s---- 2 0
4: on_resolve 1 --- i-s---- 3 0
5: write_data 1 --- i-s---- 4 0
6: request 1 -m- i-s---- 5 0
7: get 1 +-- i-s---v 6 0
8: post 1 +-- i-s---v 7 0
9: head 1 +-- i-s---v 8 0
10: ws 1 +-- i-s---v 9 0
11: connect 1 --- i-s---- 10 0
12: receive_callback 1 --- i-s--Vv 11 0
13: response 0 --- --s---- 0 1 0
14: help 1 +-- --s---- 0 0 0
15: main 2 +-- --s---- 0 2 0
16: create 3 +-- --s---- 0 0 0
17: #global_init# 4 --- --s---- 0 0 0
;;; .\cmds\test\test_tls.c
Globals:
0: Host
1: Host_fd
2: Status
3: Debug
4: tp
VARIABLES defined:
4: public object tp
STRINGS:
0: .\cmds\test\test_tls.c
1: include/globals.h
2: mudcore/include/mudcore.h
3: mudcore/include/ansi.h
4: Result: \n
5: \n
6: /adm/daemons/securityd
7: (admin)
8: valid_grant
DISASSEMBLY:
;; Function: public void create()
0000: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
0003: 04 BD 01 F_EFUN1 ; EFUN: getuid(445)
0006: 04 BE 01 F_EFUN1 ; EFUN: seteuid(446)
0009: 01 pop ;
000a: 2F return_zero ;
; .\cmds\test\test_tls.c:7
;; Function: protected void response(mixed)
000b: 3F 00 local ; LV0
000d: 04 87 01 F_EFUN1 ; EFUN: debug_message(391)
; .\cmds\test\test_tls.c:15
0010: 02 02 84 04 F_PUSH ; push global 4, string 4
0014: 3C 00 transfer_local ; LV0
0016: 63 + ;
0017: 0E 05 short_string ; "\n"
0019: 63 + ;
001a: 71 52 00 02 simul_efun ; "tell_object" args: 2
001e: 01 pop ;
001f: 2F return_zero ;
; .\cmds\test\test_tls.c:16
;; Function: public int main(object,string)
0020: 02 04 06 08 C0 07 F_PUSH ; push string 6, string 8, local 0, string 7
0026: 07 87 00 04 F_EFUNV ; EFUN: call_other(135)
002a: 18 03 00 branch_when_non_zero ; 0003 (002e)
002d: 2F return_zero ;
; .\cmds\test\test_tls.c:22
002e: 0E 05 short_string ; "\n"
0030: 71 51 00 01 simul_efun ; "write" args: 1
0034: 01 pop ;
; .\cmds\test\test_tls.c:25
0035: 3C 00 transfer_local ; LV0
0037: 44 04 00 global_lvalue ; tp(4)
003a: 61 (void)assign ;
; .\cmds\test\test_tls.c:26
003b: 3C 01 transfer_local ; LV1
003d: 2C 07 00 01 F_CALL_FUNCTION_BY_ADDRESS ; get, pushed_args:1
0041: 01 pop ;
0042: 10 const1 ;
0043: 2E return ;
0044: 2F return_zero ;
; .\cmds\test\test_tls.c:30
;; Function: public int help()
0045: 10 const1 ;
0046: 2E return ;
; .\cmds\test\test_tls.c:30
;; Function: hidden void #global_init#()
0047: 2D 01 0C 00 00 call_inherited ; mudcore/inherit/Http.c::#global_init# 12
004c: 01 pop ;
004d: 2F return_zero ;
; .\cmds\test\test_tls.c:4
;;; *** Line Number Info ***
absolute line -> (file, line) table:
0 lines from 1 [.\cmds\test\test_tls.c]
240 lines from 2 [include/globals.h]
312 lines from 3 [mudcore/include/mudcore.h]
3 lines from 2 [include/globals.h]
1 lines from 1 [.\cmds\test\test_tls.c]
121 lines from 4 [mudcore/include/ansi.h]
38 lines from 1 [.\cmds\test\test_tls.c]
address -> absolute line table:
0000-000a: 683
000b-000f: 691
0010-001f: 692
0020-002d: 698
002e-0034: 701
0035-003a: 702
003b-0046: 706
0047-004d: 680
;;; feature/clean_up.c
Globals:
VARIABLES defined:
STRINGS:
0: feature/clean_up.c
1: include/globals.h
2: mudcore/include/mudcore.h
3: no_clean_up
4: query
5: %O no_clean_up = %d\n
6: quest_ob
7: query_temp
8: is_stay_in_room
9: no_destructed
10: flag =
11: \n
DISASSEMBLY:
;; Function: public int clean_up(int)
0000: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
0003: 04 CE 00 F_EFUN1 ; EFUN: clonep(206)
0006: 6D ! ;
0007: 26 0F 00 && ; 000f (0017)
000a: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
000d: 02 02 04 03 F_PUSH ; push string 4, string 3
0011: 07 87 00 03 F_EFUNV ; EFUN: call_other(135)
0015: 10 const1 ;
0016: 30 == ;
0017: 17 04 00 branch_when_zero ; 0004 (001c)
001a: 10 const1 ;
001b: 2E return ;
; feature/clean_up.c:28
001c: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
001f: 02 02 04 03 F_PUSH ; push string 4, string 3
0023: 07 87 00 03 F_EFUNV ; EFUN: call_other(135)
0027: 10 const1 ;
0028: 15 1D 00 branch_le ; 001d (0046)
; feature/clean_up.c:30
002b: 02 02 03 05 F_PUSH ; push string 3, string 5
002f: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
0032: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
0035: 02 02 04 03 F_PUSH ; push string 4, string 3
0039: 07 87 00 03 F_EFUNV ; EFUN: call_other(135)
003d: 07 0F 01 03 F_EFUNV ; EFUN: sprintf(271)
0041: 71 71 00 02 simul_efun ; "log_file" args: 2
0045: 01 pop ;
; feature/clean_up.c:31
0046: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
0049: 04 12 01 F_EFUN1 ; EFUN: interactive(274)
004c: 17 04 00 branch_when_zero ; 0004 (0051)
004f: 10 const1 ;
0050: 2E return ;
; feature/clean_up.c:34
0051: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
0054: 02 02 07 06 F_PUSH ; push string 7, string 6
0058: 07 87 00 03 F_EFUNV ; EFUN: call_other(135)
005c: 17 04 00 branch_when_zero ; 0004 (0061)
005f: 10 const1 ;
0060: 2E return ;
; feature/clean_up.c:38
0061: 03 A2 00 F_EFUN0 ; EFUN: environment(162)
0064: 17 04 00 branch_when_zero ; 0004 (0069)
0067: 10 const1 ;
0068: 2E return ;
; feature/clean_up.c:44
0069: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
006c: 04 A3 00 F_EFUN1 ; EFUN: all_inventory(163)
006f: 62 01 (void)assign_local ; LV1
; feature/clean_up.c:47
0071: 3F 01 local ; LV1
0073: 04 91 00 F_EFUN1 ; EFUN: sizeof(145)
0076: 10 const1 ;
0077: 64 subtract ;
0078: 62 02 (void)assign_local ; LV2
007a: 19 30 00 branch ; 0030 (00ab)
; feature/clean_up.c:48
007d: 02 02 C2 C1 F_PUSH ; push local 2, local 1
0081: 47 index ;
0082: 04 12 01 F_EFUN1 ; EFUN: interactive(274)
0085: 25 1D 00 || ; 001d (00a3)
; feature/clean_up.c:49
0088: 02 02 C2 C1 F_PUSH ; push local 2, local 1
008c: 47 index ;
008d: 02 02 07 06 F_PUSH ; push string 7, string 6
0091: 07 87 00 03 F_EFUNV ; EFUN: call_other(135)
0095: 25 0D 00 || ; 000d (00a3)
; feature/clean_up.c:50
0098: 02 02 C2 C1 F_PUSH ; push local 2, local 1
009c: 47 index ;
009d: 0E 08 short_string ; "is_stay_in_room"
009f: 07 87 00 02 F_EFUNV ; EFUN: call_other(135)
00a3: 17 04 00 branch_when_zero ; 0004 (00a8)
00a6: 10 const1 ;
00a7: 2E return ;
; feature/clean_up.c:51
00a8: 40 02 local_lvalue ; LV2
00aa: 37 dec(x) ;
00ab: 02 02 C2 40 F_PUSH ; push local 2, number 0
00af: 34 >= ;
00b0: 1B 34 00 bbranch_when_non_zero ; 0034 (007d)
; feature/clean_up.c:48
00b3: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
00b6: 71 42 00 01 simul_efun ; "destruct" args: 1
00ba: 01 pop ;
; feature/clean_up.c:54
00bb: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
00be: 04 D6 00 F_EFUN1 ; EFUN: objectp(214)
00c1: 17 21 00 branch_when_zero ; 0021 (00e3)
; feature/clean_up.c:55
00c4: 0E 09 short_string ; "no_destructed"
; feature/clean_up.c:57
00c6: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
00c9: 04 91 01 F_EFUN1 ; EFUN: base_name(401)
00cc: 0E 0A short_string ; " flag = "
00ce: 63 + ;
; feature/clean_up.c:56
00cf: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
00d2: 02 02 04 03 F_PUSH ; push string 4, string 3
00d6: 07 87 00 03 F_EFUNV ; EFUN: call_other(135)
00da: 63 + ;
00db: 0E 0B short_string ; "\n"
00dd: 63 + ;
00de: 71 71 00 02 simul_efun ; "log_file" args: 2
00e2: 01 pop ;
00e3: 2F return_zero ;
00e4: 2F return_zero ;
; feature/clean_up.c:57
;;; *** Line Number Info ***
absolute line -> (file, line) table:
0 lines from 1 [feature/clean_up.c]
240 lines from 2 [include/globals.h]
312 lines from 3 [mudcore/include/mudcore.h]
3 lines from 2 [include/globals.h]
61 lines from 1 [feature/clean_up.c]
address -> absolute line table:
0000-001b: 583
001c-002a: 585
002b-0045: 586
0046-0050: 589
0051-0060: 593
0061-0068: 599
0069-0070: 602
0071-007c: 603
007d-0087: 604
0088-0097: 605
0098-00a7: 606
00a8-00b2: 603
00b3-00ba: 609
00bb-00c3: 610
00c4-00c5: 612
00c6-00ce: 611
00cf-00e4: 612
;;; mudcore/inherit/Http.c
Globals:
0: Host
1: Host_fd
2: Status
3: Debug
VARIABLES defined:
0: public nosave mapping Host
1: public nosave mapping Host_fd
2: public nosave mapping Status
3: public nosave int Debug
STRINGS:
0: mudcore/inherit/Http.c
1: include/globals.h
2: mudcore/include/mudcore.h
3: mudcore/include/socket.h
4: mudcore/include/socket_err.h
5: receive_callback: %O
6: status
7: header
8: Connection
9: close
10: write_data:
11: http
12:
13: port
14: receive_data
15: write_data
16: socket_error :
17: socket_status : %O
18: %s: %s %d
19:
20: https://
21: https://%s:%d%s
22: https://%s/%s
23: https://%s
24: https url格式不正确
25: http://
26: http://%s:%d%s
27: http://%s/%s
28: http://%s
29: http url格式不正确
30: url格式或协议不正确
31: /
\n32:
33: :
34: GET
35: &
36: =
37: ?
38: POST
39: ,
40: :
41: {
42: }
\nContent-Length:
44: utf-8
45: receive_callback
46: socket_shutdown
47: host
48: path
\nHost: TTP/1.1
\n50:
51: Status : %O
52: on_resolve
53: Miss 'url' argument to 'get'.
54: Miss 'url' argument to 'post'.
55: Miss 'url' argument to 'head'.
56: HEAD
57: Miss 'url' argument to 'ws'.
58: wss://
59: ws://
60: Upgrade
61: websocket
DISASSEMBLY:
;; Function: protected varargs void receive_callback(mixed *)
0000: 43 03 00 global ; Debug(3)
0003: 26 0E 00 && ; 000e (0012)
0006: 02 02 05 C0 F_PUSH ; push string 5, local 0
000a: 07 0F 01 02 F_EFUNV ; EFUN: sprintf(271)
000e: 04 87 01 F_EFUN1 ; EFUN: debug_message(391)
0011: 0F const0 ;
0012: 01 pop ;
0013: 2F return_zero ;
; mudcore/inherit/Http.c:25
;; Function: protected void socket_shutdown(int)
0014: 02 03 42 06 C0 F_PUSH ; push number 2, string 6, local 0
0019: 44 02 00 global_lvalue ; Status(2)
001c: 48 index_lvalue ;
001d: 48 index_lvalue ;
001e: 61 (void)assign ;
; mudcore/inherit/Http.c:30
001f: 3C 00 transfer_local ; LV0
0021: 04 66 01 F_EFUN1 ; EFUN: socket_close(358)
0024: 01 pop ;
0025: 2F return_zero ;
; mudcore/inherit/Http.c:31
;; Function: protected void response(mixed)
0026: 3C 00 transfer_local ; LV0
0028: 04 87 01 F_EFUN1 ; EFUN: debug_message(391)
002b: 2F return_zero ;
; mudcore/inherit/Http.c:41
;; Function: protected void receive_data(int,mixed)
002c: 3C 01 transfer_local ; LV1
002e: 2C 01 00 01 F_CALL_FUNCTION_BY_ADDRESS ; response, pushed_args:1
0032: 01 pop ;
; mudcore/inherit/Http.c:46
0033: 02 04 08 07 C0 82 F_PUSH ; push string 8, string 7, local 0, global 2
0039: 47 index ;
003a: 47 index ;
003b: 47 index ;
003c: 04 D2 00 F_EFUN1 ; EFUN: stringp(210)
003f: 6D ! ;
0040: 25 11 00 || ; 0011 (0052)
0043: 02 04 08 07 C0 82 F_PUSH ; push string 8, string 7, local 0, global 2
0049: 47 index ;
004a: 47 index ;
004b: 47 index ;
004c: 04 B8 00 F_EFUN1 ; EFUN: lower_case(184)
004f: 0E 09 short_string ; "close"
0051: 30 == ;
0052: 17 09 00 branch_when_zero ; 0009 (005c)
; mudcore/inherit/Http.c:48
0055: 3F 00 local ; LV0
0057: 2C 00 00 01 F_CALL_FUNCTION_BY_ADDRESS ; socket_shutdown, pushed_args:1
005b: 01 pop ;
005c: 2F return_zero ;
; mudcore/inherit/Http.c:51
;; Function: protected void write_data(int)
005d: 02 03 43 06 C0 F_PUSH ; push number 3, string 6, local 0
0062: 44 02 00 global_lvalue ; Status(2)
0065: 48 index_lvalue ;
0066: 48 index_lvalue ;
0067: 61 (void)assign ;
; mudcore/inherit/Http.c:57
0068: 43 03 00 global ; Debug(3)
006b: 26 0F 00 && ; 000f (007b)
006e: 02 04 0A 0B C0 82 F_PUSH ; push string 10, string 11, local 0, global 2
0074: 47 index ;
0075: 47 index ;
0076: 63 + ;
0077: 04 87 01 F_EFUN1 ; EFUN: debug_message(391)
007a: 0F const0 ;
007b: 01 pop ;
; mudcore/inherit/Http.c:58
007c: 02 02 C0 0B F_PUSH ; push local 0, string 11
0080: 3C 00 transfer_local ; LV0
0082: 43 02 00 global ; Status(2)
0085: 47 index ;
0086: 47 index ;
0087: 05 65 01 F_EFUN2 ; EFUN: socket_write(357)
008a: 01 pop ;
008b: 2F return_zero ;
; mudcore/inherit/Http.c:59
;; Function: protected void connect(string,string)
008c: 3C 00 transfer_local ; LV0
008e: 43 01 00 global ; Host_fd(1)
0091: 47 index ;
0092: 62 02 (void)assign_local ; LV2
; mudcore/inherit/Http.c:67
0094: 3F 02 local ; LV2
0096: 3C 01 transfer_local ; LV1
0098: 0E 0C short_string ; " "
009a: 63 + ;
009b: 02 03 0D C2 82 F_PUSH ; push string 13, local 2, global 2
00a0: 47 index ;
00a1: 47 index ;
00a2: 63 + ;
00a3: 02 02 0E 0F F_PUSH ; push string 14, string 15
00a7: 07 64 01 04 F_EFUNV ; EFUN: socket_connect(356)
00ab: 62 03 (void)assign_local ; LV3
; mudcore/inherit/Http.c:68
00ad: 02 02 C3 41 F_PUSH ; push local 3, number 1
00b1: 16 1D 00 branch_eq ; 001d (00cf)
; mudcore/inherit/Http.c:69
00b4: 43 03 00 global ; Debug(3)
00b7: 26 0E 00 && ; 000e (00c6)
00ba: 02 02 10 C3 F_PUSH ; push string 16, local 3
00be: 04 69 01 F_EFUN1 ; EFUN: socket_error(361)
00c1: 63 + ;
00c2: 04 87 01 F_EFUN1 ; EFUN: debug_message(391)
00c5: 0F const0 ;
00c6: 01 pop ;
; mudcore/inherit/Http.c:71
00c7: 3F 02 local ; LV2
00c9: 2C 00 00 01 F_CALL_FUNCTION_BY_ADDRESS ; socket_shutdown, pushed_args:1
00cd: 01 pop ;
00ce: 2F return_zero ;
; mudcore/inherit/Http.c:72
00cf: 02 03 41 06 C2 F_PUSH ; push number 1, string 6, local 2
00d4: 44 02 00 global_lvalue ; Status(2)
00d7: 48 index_lvalue ;
00d8: 48 index_lvalue ;
00d9: 61 (void)assign ;
; mudcore/inherit/Http.c:76
00da: 43 03 00 global ; Debug(3)
00dd: 26 11 00 && ; 0011 (00ef)
00e0: 02 02 11 C2 F_PUSH ; push string 17, local 2
00e4: 04 6D 01 F_EFUN1 ; EFUN: socket_status(365)
00e7: 07 0F 01 02 F_EFUNV ; EFUN: sprintf(271)
00eb: 04 87 01 F_EFUN1 ; EFUN: debug_message(391)
00ee: 0F const0 ;
00ef: 01 pop ;
00f0: 2F return_zero ;
; mudcore/inherit/Http.c:77
;; Function: protected void on_resolve(string,string,int)
00f1: 43 03 00 global ; Debug(3)
00f4: 26 10 00 && ; 0010 (0105)
00f7: 02 04 12 C0 C1 C2 F_PUSH ; push string 18, local 0, local 1, local 2
00fd: 07 0F 01 04 F_EFUNV ; EFUN: sprintf(271)
0101: 04 87 01 F_EFUN1 ; EFUN: debug_message(391)
0104: 0F const0 ;
0105: 01 pop ;
; mudcore/inherit/Http.c:83
0106: 3F 01 local ; LV1
0108: 17 14 00 branch_when_zero ; 0014 (011d)
; mudcore/inherit/Http.c:85
010b: 02 02 C1 C0 F_PUSH ; push local 1, local 0
010f: 44 00 00 global_lvalue ; Host(0)
0112: 48 index_lvalue ;
0113: 61 (void)assign ;
; mudcore/inherit/Http.c:87
0114: 02 02 C0 C1 F_PUSH ; push local 0, local 1
0118: 2C 0A 00 02 F_CALL_FUNCTION_BY_ADDRESS ; connect, pushed_args:2
011c: 01 pop ;
011d: 2F return_zero ;
; mudcore/inherit/Http.c:88
;; Function: protected nomask object request(string,string,mixed,mapping)
011e: 0F const0 ;
011f: 62 05 (void)assign_local ; LV5
; mudcore/inherit/Http.c:94
0121: 0E 13 short_string ; ""
0123: 62 0D (void)assign_local ; LV13
; mudcore/inherit/Http.c:98
0125: 02 03 C1 14 40 F_PUSH ; push local 1, string 20, number 0
012a: 06 C0 00 F_EFUN3 ; EFUN: strsrch(192)
012d: 18 41 00 branch_when_non_zero ; 0041 (016f)
; mudcore/inherit/Http.c:100
0130: 10 const1 ;
0131: 62 05 (void)assign_local ; LV5
; mudcore/inherit/Http.c:102
0133: 02 02 C1 15 F_PUSH ; push local 1, string 21
0137: 72 03 sscanf ; 3
0139: 40 06 local_lvalue ; LV6
013b: 61 (void)assign ;
013c: 40 08 local_lvalue ; LV8
013e: 61 (void)assign ;
013f: 40 07 local_lvalue ; LV7
0141: 61 (void)assign ;
0142: 0B 03 byte ; 3
0144: 30 == ;
0145: 25 1D 00 || ; 001d (0163)
; mudcore/inherit/Http.c:103
0148: 02 02 C1 16 F_PUSH ; push local 1, string 22
014c: 72 02 sscanf ; 2
014e: 40 06 local_lvalue ; LV6
0150: 61 (void)assign ;
0151: 40 07 local_lvalue ; LV7
0153: 61 (void)assign ;
0154: 0B 02 byte ; 2
0156: 30 == ;
0157: 25 0B 00 || ; 000b (0163)
; mudcore/inherit/Http.c:104
015a: 02 02 C1 17 F_PUSH ; push local 1, string 23
015e: 72 01 sscanf ; 1
0160: 40 06 local_lvalue ; LV6
0162: 61 (void)assign ;
0163: 18 08 00 branch_when_non_zero ; 0008 (016c)
; mudcore/inherit/Http.c:105
0166: 0E 18 short_string ; "https url格式不正确"
0168: 04 2A 01 F_EFUN1 ; EFUN: error(298)
016b: 2F return_zero ;
016c: 19 4F 00 branch ; 004f (01bc)
; mudcore/inherit/Http.c:107
016f: 02 03 C1 19 40 F_PUSH ; push local 1, string 25, number 0
0174: 06 C0 00 F_EFUN3 ; EFUN: strsrch(192)
0177: 18 3E 00 branch_when_non_zero ; 003e (01b6)
; mudcore/inherit/Http.c:111
017a: 02 02 C1 1A F_PUSH ; push local 1, string 26
017e: 72 03 sscanf ; 3
0180: 40 06 local_lvalue ; LV6
0182: 61 (void)assign ;
0183: 40 08 local_lvalue ; LV8
0185: 61 (void)assign ;
0186: 40 07 local_lvalue ; LV7
0188: 61 (void)assign ;
0189: 0B 03 byte ; 3
018b: 30 == ;
018c: 25 1D 00 || ; 001d (01aa)
; mudcore/inherit/Http.c:113
018f: 02 02 C1 1B F_PUSH ; push local 1, string 27
0193: 72 02 sscanf ; 2
0195: 40 06 local_lvalue ; LV6
0197: 61 (void)assign ;
0198: 40 07 local_lvalue ; LV7
019a: 61 (void)assign ;
019b: 0B 02 byte ; 2
019d: 30 == ;
019e: 25 0B 00 || ; 000b (01aa)
; mudcore/inherit/Http.c:114
01a1: 02 02 C1 1C F_PUSH ; push local 1, string 28
01a5: 72 01 sscanf ; 1
01a7: 40 06 local_lvalue ; LV6
01a9: 61 (void)assign ;
01aa: 18 08 00 branch_when_non_zero ; 0008 (01b3)
; mudcore/inherit/Http.c:115
01ad: 0E 1D short_string ; "http url格式不正确"
01af: 04 2A 01 F_EFUN1 ; EFUN: error(298)
01b2: 2F return_zero ;
01b3: 19 08 00 branch ; 0008 (01bc)
; mudcore/inherit/Http.c:117
01b6: 0E 1E short_string ; "url格式或协议不正确"
01b8: 04 2A 01 F_EFUN1 ; EFUN: error(298)
01bb: 2F return_zero ;
; mudcore/inherit/Http.c:123
01bc: 3F 08 local ; LV8
01be: 18 11 00 branch_when_non_zero ; 0011 (01d0)
; mudcore/inherit/Http.c:127
01c1: 3F 05 local ; LV5
01c3: 17 08 00 branch_when_zero ; 0008 (01cc)
01c6: 08 BB 01 F_SHORT_INT ; short 443
01c9: 19 04 00 branch ; 0004 (01ce)
01cc: 0B 50 byte ; 80
01ce: 62 08 (void)assign_local ; LV8
; mudcore/inherit/Http.c:128
01d0: 3F 07 local ; LV7
01d2: 18 09 00 branch_when_non_zero ; 0009 (01dc)
; mudcore/inherit/Http.c:129
01d5: 0E 1F short_string ; "/"
01d7: 62 07 (void)assign_local ; LV7
01d9: 19 13 00 branch ; 0013 (01ed)
; mudcore/inherit/Http.c:130
01dc: 02 02 40 C7 F_PUSH ; push number 0, local 7
01e0: 47 index ;
01e1: 0B 2F byte ; 47
01e3: 16 09 00 branch_eq ; 0009 (01ed)
; mudcore/inherit/Http.c:131
01e6: 02 02 1F C7 F_PUSH ; push string 31, local 7
01ea: 63 + ;
01eb: 62 07 (void)assign_local ; LV7
; mudcore/inherit/Http.c:132
01ed: 3F 03 local ; LV3
01ef: 04 10 01 F_EFUN1 ; EFUN: mapp(272)
01f2: 17 2B 00 branch_when_zero ; 002b (021e)
; mudcore/inherit/Http.c:134
01f5: 3F 03 local ; LV3
01f7: 1E 08 09 0A foreach ; (mapping) local 9, local 10
01fb: 19 1C 00 branch ; 001c (0218)
; mudcore/inherit/Http.c:136
01fe: 3F 0C local ; LV12
0200: 17 0A 00 branch_when_zero ; 000a (020b)
0203: 02 02 CC 20 F_PUSH ; push local 12, string 32
0207: 63 + ;
0208: 19 04 00 branch ; 0004 (020d)
\n"b: 0E 20 short_string ; "
020d: 3F 09 local ; LV9
020f: 63 + ;
0210: 0E 21 short_string ; ": "
0212: 63 + ;
0213: 3F 0A local ; LV10
0215: 63 + ;
0216: 62 0C (void)assign_local ; LV12
; mudcore/inherit/Http.c:138
0218: 1F 1B 00 next_foreach ; 001b (01fe)
021b: 19 06 00 branch ; 0006 (0222)
; mudcore/inherit/Http.c:139
021e: 0E 13 short_string ; ""
0220: 62 0C (void)assign_local ; LV12
; mudcore/inherit/Http.c:143
0222: 02 02 C0 22 F_PUSH ; push local 0, string 34
0226: 30 == ;
0227: 26 07 00 && ; 0007 (022f)
022a: 3F 02 local ; LV2
022c: 04 10 01 F_EFUN1 ; EFUN: mapp(272)
022f: 17 30 00 branch_when_zero ; 0030 (0260)
; mudcore/inherit/Http.c:146
0232: 3F 02 local ; LV2
0234: 1E 08 09 0A foreach ; (mapping) local 9, local 10
0238: 19 1C 00 branch ; 001c (0255)
; mudcore/inherit/Http.c:148
023b: 3F 0B local ; LV11
023d: 17 0A 00 branch_when_zero ; 000a (0248)
0240: 02 02 CB 23 F_PUSH ; push local 11, string 35
0244: 63 + ;
0245: 19 04 00 branch ; 0004 (024a)
0248: 0E 13 short_string ; ""
024a: 3F 09 local ; LV9
024c: 63 + ;
024d: 0E 24 short_string ; "="
024f: 63 + ;
0250: 3F 0A local ; LV10
0252: 63 + ;
0253: 62 0B (void)assign_local ; LV11
; mudcore/inherit/Http.c:150
0255: 1F 1B 00 next_foreach ; 001b (023b)
; mudcore/inherit/Http.c:151
0258: 02 02 25 CB F_PUSH ; push string 37, local 11
025c: 63 + ;
025d: 40 07 local_lvalue ; LV7
025f: 60 (void)+= ;
; mudcore/inherit/Http.c:152
0260: 02 02 C0 26 F_PUSH ; push local 0, string 38
0264: 13 60 00 branch_ne ; 0060 (02c5)
; mudcore/inherit/Http.c:155
0267: 3F 02 local ; LV2
0269: 04 10 01 F_EFUN1 ; EFUN: mapp(272)
026c: 26 07 00 && ; 0007 (0274)
026f: 3F 02 local ; LV2
0271: 04 91 00 F_EFUN1 ; EFUN: sizeof(145)
0274: 17 35 00 branch_when_zero ; 0035 (02aa)
; mudcore/inherit/Http.c:157
0277: 3F 02 local ; LV2
0279: 1E 08 09 0A foreach ; (mapping) local 9, local 10
027d: 19 1C 00 branch ; 001c (029a)
; mudcore/inherit/Http.c:159
0280: 3F 0B local ; LV11
0282: 17 0A 00 branch_when_zero ; 000a (028d)
0285: 02 02 CB 27 F_PUSH ; push local 11, string 39
0289: 63 + ;
028a: 19 04 00 branch ; 0004 (028f)
028d: 0E 13 short_string ; ""
028f: 3F 09 local ; LV9
0291: 63 + ;
0292: 0E 28 short_string ; ":"
0294: 63 + ;
0295: 3F 0A local ; LV10
0297: 63 + ;
0298: 62 0B (void)assign_local ; LV11
; mudcore/inherit/Http.c:161
029a: 1F 1B 00 next_foreach ; 001b (0280)
; mudcore/inherit/Http.c:162
029d: 02 02 29 CB F_PUSH ; push string 41, local 11
02a1: 63 + ;
02a2: 0E 2A short_string ; "}"
02a4: 63 + ;
02a5: 62 0D (void)assign_local ; LV13
02a7: 19 0E 00 branch ; 000e (02b6)
; mudcore/inherit/Http.c:163
02aa: 3F 02 local ; LV2
02ac: 04 D2 00 F_EFUN1 ; EFUN: stringp(210)
02af: 17 06 00 branch_when_zero ; 0006 (02b6)
; mudcore/inherit/Http.c:165
02b2: 3F 02 local ; LV2
02b4: 62 0D (void)assign_local ; LV13
; mudcore/inherit/Http.c:167
02b6: 02 03 2B CD 2C F_PUSH ; push string 43, local 13, string 44
02bb: 05 43 01 F_EFUN2 ; EFUN: string_encode(323)
02be: 04 91 00 F_EFUN1 ; EFUN: sizeof(145)
02c1: 63 + ;
02c2: 40 0C local_lvalue ; LV12
02c4: 60 (void)+= ;
; mudcore/inherit/Http.c:170
02c5: 3F 05 local ; LV5
02c7: 17 07 00 branch_when_zero ; 0007 (02cf)
02ca: 0B 05 byte ; 5
02cc: 19 03 00 branch ; 0003 (02d0)
02cf: 10 const1 ;
02d0: 02 02 2D 2E F_PUSH ; push string 45, string 46
02d4: 06 60 01 F_EFUN3 ; EFUN: socket_create(352)
02d7: 62 04 (void)assign_local ; LV4
; mudcore/inherit/Http.c:173
02d9: 3C 05 transfer_local ; LV5
02db: 17 12 00 branch_when_zero ; 0012 (02ee)
; mudcore/inherit/Http.c:174
02de: 02 03 C4 41 40 F_PUSH ; push local 4, number 1, number 0
02e3: 06 6B 01 F_EFUN3 ; EFUN: socket_set_option(363)
; mudcore/inherit/Http.c:176
02e6: 02 03 C4 42 C6 F_PUSH ; push local 4, number 2, local 6
02eb: 06 6B 01 F_EFUN3 ; EFUN: socket_set_option(363)
; mudcore/inherit/Http.c:177
02ee: 02 02 C4 C6 F_PUSH ; push local 4, local 6
02f2: 44 01 00 global_lvalue ; Host_fd(1)
02f5: 48 index_lvalue ;
02f6: 61 (void)assign ;
; mudcore/inherit/Http.c:179
02f7: 12 00 00 aggregate_assoc ; 0
02fa: 3F 04 local ; LV4
02fc: 44 02 00 global_lvalue ; Status(2)
02ff: 48 index_lvalue ;
0300: 61 (void)assign ;
; mudcore/inherit/Http.c:180
0301: 02 03 40 06 C4 F_PUSH ; push number 0, string 6, local 4
0306: 44 02 00 global_lvalue ; Status(2)
0309: 48 index_lvalue ;
030a: 48 index_lvalue ;
030b: 61 (void)assign ;
; mudcore/inherit/Http.c:181
030c: 02 03 C6 2F C4 F_PUSH ; push local 6, string 47, local 4
0311: 44 02 00 global_lvalue ; Status(2)
0314: 48 index_lvalue ;
0315: 48 index_lvalue ;
0316: 61 (void)assign ;
; mudcore/inherit/Http.c:182
0317: 02 03 C8 0D C4 F_PUSH ; push local 8, string 13, local 4
031c: 44 02 00 global_lvalue ; Status(2)
031f: 48 index_lvalue ;
0320: 48 index_lvalue ;
0321: 61 (void)assign ;
; mudcore/inherit/Http.c:183
0322: 02 03 C7 30 C4 F_PUSH ; push local 7, string 48, local 4
0327: 44 02 00 global_lvalue ; Status(2)
032a: 48 index_lvalue ;
032b: 48 index_lvalue ;
032c: 61 (void)assign ;
; mudcore/inherit/Http.c:184
032d: 3C 00 transfer_local ; LV0
032f: 0E 0C short_string ; " "
0331: 63 + ;
0332: 3C 07 transfer_local ; LV7
0334: 63 + ;
\nHost: " 31 short_string ; " HTTP/1.1
0337: 63 + ;
0338: 3F 06 local ; LV6
033a: 63 + ;
033b: 3F 08 local ; LV8
033d: 0B 50 byte ; 80
033f: 30 == ;
0340: 25 08 00 || ; 0008 (0349)
0343: 3F 08 local ; LV8
0345: 08 BB 01 F_SHORT_INT ; short 443
0348: 30 == ;
0349: 17 07 00 branch_when_zero ; 0007 (0351)
034c: 0E 13 short_string ; ""
034e: 19 07 00 branch ; 0007 (0356)
0351: 02 02 28 C8 F_PUSH ; push string 40, local 8
0355: 63 + ;
0356: 63 + ;
0357: 3C 0C transfer_local ; LV12
0359: 63 + ;
\n"a: 0E 32 short_string ; "
035c: 63 + ;
035d: 3C 0D transfer_local ; LV13
035f: 63 + ;
0360: 02 02 0B C4 F_PUSH ; push string 11, local 4
0364: 44 02 00 global_lvalue ; Status(2)
0367: 48 index_lvalue ;
0368: 48 index_lvalue ;
0369: 61 (void)assign ;
; mudcore/inherit/Http.c:185
036a: 3C 03 transfer_local ; LV3
036c: 25 05 00 || ; 0005 (0372)
036f: 12 00 00 aggregate_assoc ; 0
0372: 0E 07 short_string ; "header"
0374: 3C 04 transfer_local ; LV4
0376: 44 02 00 global_lvalue ; Status(2)
0379: 48 index_lvalue ;
037a: 48 index_lvalue ;
037b: 61 (void)assign ;
; mudcore/inherit/Http.c:186
037c: 43 03 00 global ; Debug(3)
037f: 26 0E 00 && ; 000e (038e)
0382: 02 02 33 82 F_PUSH ; push string 51, global 2
0386: 07 0F 01 02 F_EFUNV ; EFUN: sprintf(271)
038a: 04 87 01 F_EFUN1 ; EFUN: debug_message(391)
038d: 0F const0 ;
038e: 01 pop ;
; mudcore/inherit/Http.c:188
038f: 02 02 C6 80 F_PUSH ; push local 6, global 0
0393: 47 index ;
0394: 17 10 00 branch_when_zero ; 0010 (03a5)
; mudcore/inherit/Http.c:190
0397: 02 03 C6 C6 80 F_PUSH ; push local 6, local 6, global 0
039c: 47 index ;
039d: 2C 0A 00 02 F_CALL_FUNCTION_BY_ADDRESS ; connect, pushed_args:2
03a1: 01 pop ;
03a2: 19 0A 00 branch ; 000a (03ad)
; mudcore/inherit/Http.c:192
03a5: 02 02 C6 34 F_PUSH ; push local 6, string 52
03a9: 05 3F 01 F_EFUN2 ; EFUN: resolve(319)
03ac: 01 pop ;
; mudcore/inherit/Http.c:196
03ad: 03 89 00 F_EFUN0 ; EFUN: this_object(137)
03b0: 2E return ;
03b1: 2F return_zero ;
; mudcore/inherit/Http.c:199
;; Function: public varargs object get(string,mapping,mapping)
03b2: 3F 00 local ; LV0
03b4: 18 08 00 branch_when_non_zero ; 0008 (03bd)
; mudcore/inherit/Http.c:204
03b7: 0E 35 short_string ; "Miss 'url' argument to 'get'."
03b9: 04 2A 01 F_EFUN1 ; EFUN: error(298)
03bc: 2F return_zero ;
; mudcore/inherit/Http.c:206
03bd: 0E 22 short_string ; "GET"
03bf: 3C 00 transfer_local ; LV0
03c1: 3C 01 transfer_local ; LV1
03c3: 3C 02 transfer_local ; LV2
03c5: 2C 05 00 04 F_CALL_FUNCTION_BY_ADDRESS ; request, pushed_args:4
03c9: 2E return ;
; mudcore/inherit/Http.c:210
;; Function: public varargs object post(string,mixed,mapping)
03ca: 3F 00 local ; LV0
03cc: 18 08 00 branch_when_non_zero ; 0008 (03d5)
; mudcore/inherit/Http.c:215
03cf: 0E 36 short_string ; "Miss 'url' argument to 'post'"
03d1: 04 2A 01 F_EFUN1 ; EFUN: error(298)
03d4: 2F return_zero ;
; mudcore/inherit/Http.c:217
03d5: 0E 26 short_string ; "POST"
03d7: 3C 00 transfer_local ; LV0
03d9: 3C 01 transfer_local ; LV1
03db: 3C 02 transfer_local ; LV2
03dd: 2C 05 00 04 F_CALL_FUNCTION_BY_ADDRESS ; request, pushed_args:4
03e1: 2E return ;
; mudcore/inherit/Http.c:221
;; Function: public varargs object head(string,mapping,mapping)
03e2: 3F 00 local ; LV0
03e4: 18 08 00 branch_when_non_zero ; 0008 (03ed)
; mudcore/inherit/Http.c:226
03e7: 0E 37 short_string ; "Miss 'url' argument to 'head'"
03e9: 04 2A 01 F_EFUN1 ; EFUN: error(298)
03ec: 2F return_zero ;
; mudcore/inherit/Http.c:228
03ed: 0E 38 short_string ; "HEAD"
03ef: 3C 00 transfer_local ; LV0
03f1: 3C 01 transfer_local ; LV1
03f3: 3C 02 transfer_local ; LV2
03f5: 2C 05 00 04 F_CALL_FUNCTION_BY_ADDRESS ; request, pushed_args:4
03f9: 2E return ;
; mudcore/inherit/Http.c:232
;; Function: public varargs object ws(string,mapping,mapping)
03fa: 3F 00 local ; LV0
03fc: 18 0B 00 branch_when_non_zero ; 000b (0408)
; mudcore/inherit/Http.c:237
03ff: 0E 39 short_string ; "Miss 'url' argument to 'ws'."
0401: 04 2A 01 F_EFUN1 ; EFUN: error(298)
0404: 2F return_zero ;
0405: 19 18 00 branch ; 0018 (041e)
; mudcore/inherit/Http.c:239
0408: 02 03 C0 3A 14 F_PUSH ; push local 0, string 58, string 20
040d: 07 B9 00 03 F_EFUNV ; EFUN: replace_string(185)
0411: 62 00 (void)assign_local ; LV0
; mudcore/inherit/Http.c:244
0413: 02 03 C0 3B 19 F_PUSH ; push local 0, string 59, string 25
0418: 07 B9 00 03 F_EFUNV ; EFUN: replace_string(185)
041c: 62 00 (void)assign_local ; LV0
; mudcore/inherit/Http.c:245
041e: 0E 22 short_string ; "GET"
0420: 3C 00 transfer_local ; LV0
0422: 3C 01 transfer_local ; LV1
0424: 02 04 3C 3D 08 3C F_PUSH ; push string 60, string 61, string 8, string 60
042a: 12 04 00 aggregate_assoc ; 4
042d: 3C 02 transfer_local ; LV2
042f: 25 05 00 || ; 0005 (0435)
0432: 12 00 00 aggregate_assoc ; 0
0435: 63 + ;
0436: 2C 05 00 04 F_CALL_FUNCTION_BY_ADDRESS ; request, pushed_args:4
043a: 2E return ;
; mudcore/inherit/Http.c:248
;; Function: hidden void #global_init#()
043b: 12 00 00 aggregate_assoc ; 0
043e: 44 00 00 global_lvalue ; Host(0)
0441: 61 (void)assign ;
; mudcore/inherit/Http.c:18
0442: 12 00 00 aggregate_assoc ; 0
0445: 44 01 00 global_lvalue ; Host_fd(1)
0448: 61 (void)assign ;
; mudcore/inherit/Http.c:19
0449: 12 00 00 aggregate_assoc ; 0
044c: 44 02 00 global_lvalue ; Status(2)
044f: 61 (void)assign ;
0450: 2F return_zero ;
; mudcore/inherit/Http.c:20
;;; *** Line Number Info ***
absolute line -> (file, line) table:
0 lines from 1 [mudcore/inherit/Http.c]
240 lines from 2 [include/globals.h]
312 lines from 3 [mudcore/include/mudcore.h]
3 lines from 2 [include/globals.h]
10 lines from 1 [mudcore/inherit/Http.c]
19 lines from 4 [mudcore/include/socket.h]
1 lines from 1 [mudcore/inherit/Http.c]
47 lines from 5 [mudcore/include/socket_err.h]
239 lines from 1 [mudcore/inherit/Http.c]
address -> absolute line table:
0000-0013: 646
0014-001e: 651
001f-0025: 652
0026-002b: 662
002c-0032: 667
0033-0054: 669
0055-005c: 672
005d-0067: 678
0068-007b: 679
007c-008b: 680
008c-0093: 688
0094-00ac: 689
00ad-00b3: 690
00b4-00c6: 692
00c7-00ce: 693
00cf-00d9: 697
00da-00f0: 698
00f1-0105: 704
0106-010a: 706
010b-0113: 708
0114-011d: 709
011e-0120: 715
0121-0124: 719
0125-012f: 721
0130-0132: 723
0133-0147: 724
0148-0159: 725
015a-0165: 726
0166-016e: 728
016f-0179: 732
017a-018e: 734
018f-01a0: 735
01a1-01ac: 736
01ad-01b5: 738
01b6-01bb: 744
01bc-01c0: 748
01c1-01cf: 749
01d0-01d4: 750
01d5-01db: 751
01dc-01e5: 752
01e6-01ec: 753
01ed-01f4: 755
01f5-01fd: 757
01fe-0217: 759
0218-021d: 760
021e-0221: 764
0222-0231: 767
0232-023a: 769
023b-0254: 771
0255-0257: 772
0258-025f: 773
0260-0266: 776
0267-0276: 778
0277-027f: 780
0280-0299: 782
029a-029c: 783
029d-02a9: 784
02aa-02b1: 786
02b2-02b5: 788
02b6-02c4: 791
02c5-02d8: 794
02d9-02dd: 795
02de-02e5: 797
02e6-02ed: 798
02ee-02f6: 800
02f7-0300: 801
0301-030b: 802
030c-0316: 803
0317-0321: 804
0322-032c: 805
032d-0369: 806
036a-037b: 807
037c-038e: 809
038f-0396: 811
0397-03a4: 813
03a5-03ac: 817
03ad-03b1: 820
03b2-03b6: 825
03b7-03bc: 827
03bd-03c9: 831
03ca-03ce: 836
03cf-03d4: 838
03d5-03e1: 842
03e2-03e6: 847
03e7-03ec: 849
03ed-03f9: 853
03fa-03fe: 858
03ff-0407: 860
0408-0412: 865
0413-041d: 866
041e-043a: 869
043b-0441: 639
0442-0448: 640
0449-0450: 641
Trace duration: 1888543.000000 us, dumping 6420 events to trace_lpcc.json in separate thread.
[thread 2d]: Dump trace successfully to file trace_lpcc.json, cost 11 ms.
生成一堆看不懂的东西,另外,还会生成一个trace_lpcc.json
可以在谷歌浏览器中调试,如:
相关用法参考:fluffos lpc tracing 使用说明