我作了一个服务端程序,使用indy的TIdTelnet控件通过telnet接收一个unix服务器发送的信息,然后把它保存在一个TStrings中。同时用另一个线程对其进行分析,再发往另一个服务端程序。功能上没什么问题,可是运行一段时间(大半天左右)后该程序就会突然消失。请问各位大虾这是怎么回事儿?是不是用来保存信息的TStrings有大小限制,超出该限制就会出问题?unix服务器发送的信息挺多的,用txt来保存的话,一个小时大概2.5MB左右。
调试欢乐多
还有,我的内存是512M的,程序消失前一共生成了20M左右的txt文件,似乎也不是很多。
如果TStrings的count有限制,那我在它的count达到一个数值(比如20000)时就停止接收unix服务器的数据,直到count小于20000为止(分析该TStrings的线程会delete它的内容),然后再次开始接收数据,这样作行吗?会不会漏掉unix服务器的数据?从停止接收到再次接收这段时间内的数据是怎样的呢?
to sdzeng(大头鸟) :事件查看器也没有我这个程序的相关信息。。
在调试状态下检查代码吧,看看是哪一行代码出错如果是不定时出现,就用下面的办法
http://topic.csdn.net/t/20041130/12/3601416.html
但我照着作却没有找到出错的代码行号:在调试环境出错时弹出两个提示,一个是“Project MNSA_ERIC_ALARM.exe raised exception class EAccessViolation with message 'Access violation at address 00402A03 in module 'MNSA_ERIC_ALARM.exe'. Read of address 0249B5F4'. Process stopped. Use Step or Run to continue.”,另一个是“Project F:\爱立信告警采集17\MNSA_ERIC_ALARM.exe faulted with message: 'access violation at 0x00406c65: write of address 0x00030d40'. Process Stopped. Use Step or Run to continue.”。
其中两个崩溃地址“00402A03”和“0x00406c65”经过运算后都没有在map文件中找到对应行号(我连“0249B5F4”、“0x00030d40”都找过了)?这是怎么回事儿呢?
BTW:下面是我的map文件的最重要的部分。Line numbers for Un_DBLink(Un_DBLink.pas) segment .text 33 0001:00092AA0 34 0001:00092ABE 35 0001:00092ACA 36 0001:00092AD4
37 0001:00092AE0 38 0001:00092AEA 39 0001:00092B0F 40 0001:00092B25
41 0001:00092B33 42 0001:00092B3D 44 0001:00092B58 46 0001:00092B87
48 0001:00092C20 48 0001:00092C27Line numbers for Un_AnalyzeEDWH_Thread(Un_AnalyzeEDWH_Thread.pas) segment .text 66 0001:00092CB4 67 0001:00092CE5 68 0001:00092CEF 69 0001:00092D01
70 0001:00092D17 71 0001:00092D24 72 0001:00092D31 74 0001:00092D44
76 0001:00092D55 77 0001:00092D63 78 0001:00092D78 79 0001:00092D80
80 0001:00092D8D 81 0001:00092D9F 84 0001:00092DA9 85 0001:00092DC9
86 0001:00092DDE 82 0001:00092DE6 91 0001:00092DFF 95 0001:00092E0F
96 0001:00092E1D 98 0001:00092E2B 99 0001:00092E39 101 0001:00092E55
104 0001:00092E5A 105 0001:00092EA1 113 0001:00092F28 117 0001:00092F4B
119 0001:00092F58 120 0001:00092F62 122 0001:00092F6A 125 0001:00092F7B
127 0001:00092F99 129 0001:00092FB8 132 0001:00093013 133 0001:00093021
135 0001:00093032 136 0001:0009304D 140 0001:00093079 143 0001:000930A3
144 0001:000930B4 145 0001:000930C0 146 0001:000930D1 147 0001:000930E2
149 0001:000930F3 150 0001:00093104 152 0001:0009311A 154 0001:00093152
156 0001:00093170 158 0001:000931AB 160 0001:000931CA 164 0001:00093205
165 0001:0009323D 167 0001:0009324E 169 0001:00093268 172 0001:00093271
174 0001:000932B5 175 0001:000932CC 176 0001:000932E4 178 0001:000932F5
180 0001:00093311 181 0001:00093360 183 0001:00093371 184 0001:00093372
170 0001:00093382 187 0001:000933B3 167 0001:000933B4 189 0001:000933BD
191 0001:000933BF 158 0001:000933C2 193 0001:000933C9 195 0001:000933CB
154 0001:000933CE 199 0001:000933D5 201 0001:000933EB 202 0001:00093413
203 0001:00093424 204 0001:0009342E 205 0001:0009343B 207 0001:00093448
209 0001:00093464 210 0001:00093491 213 0001:000934A2 215 0001:000934A4
127 0001:000934A7 217 0001:000934AE 218 0001:000934BC 219 0001:000934C4
220 0001:000934D2 221 0001:000934E0 223 0001:000934F7 226 0001:000934FC
115 0001:00093503 228 0001:00093535 232 0001:0009362C 233 0001:00093636
237 0001:00093638 238 0001:00093645 242 0001:00093648 243 0001:00093650
247 0001:00093654 248 0001:00093657 249 0001:00093664 250 0001:00093671
254 0001:00093690 255 0001:00093693 256 0001:000936A0 257 0001:000936AD
262 0001:000936CC 263 0001:000936CF 264 0001:000936D6 274 0001:0009370C
274 0001:00093713
47 0001:0009B52A 48 0001:0009B551 51 0001:0009B558 52 0001:0009B563
53 0001:0009B56B 54 0001:0009B57E 57 0001:0009B584 58 0001:0009B5A5
60 0001:0009B5B6 61 0001:0009B5C4 62 0001:0009B5D9 63 0001:0009B5E1
64 0001:0009B5EE 65 0001:0009B600 66 0001:0009B60E 67 0001:0009B616
69 0001:0009B626 70 0001:0009B654 71 0001:0009B66C 72 0001:0009B69A
75 0001:0009B6D7 78 0001:0009B6E9 82 0001:0009B6F9 83 0001:0009B70F
85 0001:0009B721 86 0001:0009B72C 87 0001:0009B737 88 0001:0009B745
89 0001:0009B753 91 0001:0009B769 93 0001:0009B790 97 0001:0009B814
98 0001:0009B820 102 0001:0009B840 103 0001:0009B84F 113 0001:0009B86C
114 0001:0009B895 115 0001:0009B897 117 0001:0009B89B 120 0001:0009B8A6
122 0001:0009B8B0 123 0001:0009B8B8 124 0001:0009B8C8 126 0001:0009B8D6
127 0001:0009B8DB 128 0001:0009B8EA 129 0001:0009B8F2 132 0001:0009B902
134 0001:0009B95F 136 0001:0009B969 138 0001:0009B977 139 0001:0009B97A
141 0001:0009B986 142 0001:0009B990 143 0001:0009B991 145 0001:0009B995
144 0001:0009B996 130 0001:0009B9AC 147 0001:0009B9BC 151 0001:0009B9C9
155 0001:0009B9DB 156 0001:0009B9F5 157 0001:0009BA03 153 0001:0009BA05
161 0001:0009BA1C 162 0001:0009BA36 163 0001:0009BA44 159 0001:0009BA48
165 0001:0009BA5F 167 0001:0009BA70 168 0001:0009BA7D 169 0001:0009BA8B
170 0001:0009BA8F 174 0001:0009BAC8 176 0001:0009BB90 176 0001:0009BB97Line numbers for Un_about(Un_about.pas) segment .text 28 0001:0009BD8C 28 0001:0009BD93Line numbers for Un_main(Un_main.pas) segment .text 44 0001:0009BFC8 45 0001:0009BFDF 46 0001:0009BFF3 48 0001:0009C007
49 0001:0009C024 50 0001:0009C042 52 0001:0009C04F 54 0001:0009C061
55 0001:0009C068 57 0001:0009C06F 58 0001:0009C077 59 0001:0009C07F
61 0001:0009C093 63 0001:0009C0A7 64 0001:0009C0BB 67 0001:0009C0DF
70 0001:0009C0FC 71 0001:0009C104 72 0001:0009C112 73 0001:0009C11E
74 0001:0009C12E 76 0001:0009C13B 78 0001:0009C145 80 0001:0009C14A
82 0001:0009C154 85 0001:0009C159 86 0001:0009C165 88 0001:0009C180
90 0001:0009C185 97 0001:0009C18C 98 0001:0009C1A3 99 0001:0009C1B7
101 0001:0009C1C8 102 0001:0009C1D6 103 0001:0009C1EB 104 0001:0009C1F3
105 0001:0009C200 106 0001:0009C212 109 0001:0009C21C 111 0001:0009C23C
107 0001:0009C244 114 0001:0009C25D 118 0001:0009C26D 119 0001:0009C2B3
126 0001:0009C31C 127 0001:0009C33C 129 0001:0009C349 130 0001:0009C34B
132 0001:0009C35C 133 0001:0009C36A 134 0001:0009C37F 135 0001:0009C387
136 0001:0009C394 137 0001:0009C3A6 138 0001:0009C3AE 139 0001:0009C3BB
142 0001:0009C3D5 143 0001:0009C3FC 144 0001:0009C421 146 0001:0009C446
148 0001:0009C447 140 0001:0009C44F 151 0001:0009C46C 154 0001:0009C49E
158 0001:0009C530 159 0001:0009C546 160 0001:0009C555 161 0001:0009C561
163 0001:0009C594 163 0001:0009C59B
Line numbers for Un_public(Un_public.pas) segment .text 58 0001:0009C648 60 0001:0009C677 62 0001:0009C6A1 63 0001:0009C6B9
65 0001:0009C6E2 66 0001:0009C6F4 67 0001:0009C70E 68 0001:0009C728
69 0001:0009C742 71 0001:0009C75C 73 0001:0009C774 74 0001:0009C7AB
76 0001:0009C7B7 77 0001:0009C7D1 78 0001:0009C7E4 79 0001:0009C81A
107 0001:0009C850 108 0001:0009C8B0 109 0001:0009C8BE 110 0001:0009C8FB
112 0001:0009C943 115 0001:0009C952 116 0001:0009C9AF 117 0001:0009C9BD
119 0001:0009C9C9 120 0001:0009C9DB 121 0001:0009C9EB 122 0001:0009CA40
123 0001:0009CA82 126 0001:0009CB00 127 0001:0009CB1D 128 0001:0009CB32
129 0001:0009CB5B 135 0001:0009CB60 136 0001:0009CBC0 137 0001:0009CBCE
138 0001:0009CC0B 140 0001:0009CC53 143 0001:0009CC62 144 0001:0009CCBF
145 0001:0009CCCD 147 0001:0009CCD9 148 0001:0009CCEB 149 0001:0009CCFB
150 0001:0009CD50 151 0001:0009CD92 153 0001:0009CE60 153 0001:0009CE67Line numbers for Un_Th_DppAlarmConn(Un_Th_DppAlarmConn.pas) segment .text 45 0001:0009CEEC 46 0001:0009CEFE 47 0001:0009CF07 48 0001:0009CF22
66 0001:0009CF28 70 0001:0009CF4C 72 0001:0009CF59 74 0001:0009CF63
76 0001:0009CF6D 77 0001:0009CF7B 78 0001:0009CF87 80 0001:0009CF90
81 0001:0009CFA1 83 0001:0009CFB6 85 0001:0009CFD0 86 0001:0009CFD4
88 0001:0009CFD8 90 0001:0009CFF2 91 0001:0009CFF6 94 0001:0009CFFA
96 0001:0009D00E 97 0001:0009D033 98 0001:0009D051 100 0001:0009D076
101 0001:0009D084 103 0001:0009D0BC 106 0001:0009D0C1 107 0001:0009D0E6
108 0001:0009D104 110 0001:0009D129 111 0001:0009D137 113 0001:0009D16F
116 0001:0009D174 118 0001:0009D199 119 0001:0009D1A7 121 0001:0009D1E2
124 0001:0009D1E7 126 0001:0009D1F1 128 0001:0009D221 129 0001:0009D255
130 0001:0009D264 132 0001:0009D269 137 0001:0009D29D 140 0001:0009D2A1
143 0001:0009D2C6 144 0001:0009D2CE 145 0001:0009D2D2 148 0001:0009D300
149 0001:0009D325 152 0001:0009D343 154 0001:0009D357 155 0001:0009D369
156 0001:0009D375 157 0001:0009D38E 158 0001:0009D399 159 0001:0009D3A0
160 0001:0009D3A6 162 0001:0009D3B5 164 0001:0009D3C2 165 0001:0009D3E5
166 0001:0009D3F4 167 0001:0009D403 168 0001:0009D412 169 0001:0009D421
172 0001:0009D42E 173 0001:0009D439 175 0001:0009D519 176 0001:0009D524
178 0001:0009D52F 179 0001:0009D53D 182 0001:0009D54E 184 0001:0009D55D
186 0001:0009D56B 190 0001:0009D56F 192 0001:0009D579 194 0001:0009D587
195 0001:0009D5AC 197 0001:0009D5BD 199 0001:0009D5DA 202 0001:0009D5DF
78 0001:0009D5EB 205 0001:0009D603 208 0001:0009D608 68 0001:0009D60F
210 0001:0009D64E 214 0001:0009D7B0 215 0001:0009D7B8 219 0001:0009D7BC
220 0001:0009D7C4 222 0001:0009D7F8 222 0001:0009D7FFLine numbers for MNSA_ERIC_ALARM(F:\爱立信告警采集17\MNSA_ERIC_ALARM.dpr) segment .text 15 0001:0009DB38 16 0001:0009DB4F 17 0001:0009DB56 18 0001:0009DB65
19 0001:0009DB71 20 0001:0009DB84 21 0001:0009DB97 22 0001:0009DB9EBound resource filese:\program files\borland\delphi6\Lib\CONTROLS.RES
e:\program files\borland\delphi6\Lib\BUTTONS.RES
e:\program files\borland\delphi6\Lib\EXTDLGS.RES
Un_DBLink.dfm
Un_about.dfm
Un_main.dfm
MNSA_ERIC_ALARM.res
MNSA_ERIC_ALARM.drfProgram entry point at 0001:0009DB38
在工程里加上map选项后,要Build一遍,运行的时候,要使用Build出来的exe
检查一下,看看是否这样子做的如果还找不到,那就试一下装Delphi环境,
然后调试状态下,等程序出错,看看是哪一行
也很感谢sdzeng(大头鸟)让我了解到一种很好的纠错方法,谢谢大家!