50 #include <memspy/engine/memspyenginehelperrom.h> |
50 #include <memspy/engine/memspyenginehelperrom.h> |
51 #include <memspy/engine/memspyenginehelperram.h> |
51 #include <memspy/engine/memspyenginehelperram.h> |
52 #include <memspy/engine/memspyenginehelperwindowserver.h> |
52 #include <memspy/engine/memspyenginehelperwindowserver.h> |
53 #include <memspy/engine/memspyenginehelpercondvar.h> |
53 #include <memspy/engine/memspyenginehelpercondvar.h> |
54 |
54 |
|
55 #ifdef _DEBUG |
|
56 #define LOG(args...) RDebug::Printf(args) |
|
57 #else |
|
58 #define LOG(args...) |
|
59 #endif |
55 |
60 |
56 CMemSpyEngineImp::CMemSpyEngineImp( RFs& aFsSession, CMemSpyEngine& aEngine ) |
61 CMemSpyEngineImp::CMemSpyEngineImp( RFs& aFsSession, CMemSpyEngine& aEngine ) |
57 : iFsSession( aFsSession ), iEngine( aEngine ) |
62 : iFsSession( aFsSession ), iEngine( aEngine ) |
58 { |
63 { |
59 } |
64 } |
60 |
65 |
61 |
66 |
62 CMemSpyEngineImp::~CMemSpyEngineImp() |
67 CMemSpyEngineImp::~CMemSpyEngineImp() |
63 { |
68 { |
64 #ifdef _DEBUG |
69 LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - START" ); |
65 RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - START" ); |
|
66 #endif |
|
67 |
70 |
68 if ( iMidwife ) |
71 if ( iMidwife ) |
69 { |
72 { |
70 iMidwife->RemoveObserver( *this ); |
73 iMidwife->RemoveObserver( *this ); |
71 } |
74 } |
72 |
75 |
73 #ifdef _DEBUG |
76 LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - deleting helpers..." ); |
74 RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - deleting helpers..." ); |
|
75 #endif |
|
76 delete iHelperSysMemTracker; |
77 delete iHelperSysMemTracker; |
77 delete iServer; |
78 delete iServer; |
78 delete iHelperKernelContainers; |
79 delete iHelperKernelContainers; |
79 delete iHelperFbServ; |
80 delete iHelperFbServ; |
80 delete iHelperHeap; |
81 delete iHelperHeap; |
92 delete iHelperWindowServer; |
93 delete iHelperWindowServer; |
93 delete iHelperCondVar; |
94 delete iHelperCondVar; |
94 |
95 |
95 iHelperWindowServerLoader.Close(); |
96 iHelperWindowServerLoader.Close(); |
96 |
97 |
97 #ifdef _DEBUG |
98 LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - deleting utilities..." ); |
98 RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - deleting utilities..." ); |
|
99 #endif |
|
100 delete iChunkWatcher; |
99 delete iChunkWatcher; |
101 delete iUndertaker; |
100 delete iUndertaker; |
102 delete iMidwife; |
101 delete iMidwife; |
103 |
102 |
104 #ifdef _DEBUG |
103 LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying containers..." ); |
105 RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying containers..." ); |
|
106 #endif |
|
107 iContainers.ResetAndDestroy(); |
104 iContainers.ResetAndDestroy(); |
108 iContainers.Close(); |
105 iContainers.Close(); |
109 |
106 |
110 #ifdef _DEBUG |
107 LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying driver..." ); |
111 RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying driver..." ); |
|
112 #endif |
|
113 if ( iMemSpyDriver ) |
108 if ( iMemSpyDriver ) |
114 { |
109 { |
115 iMemSpyDriver->Close(); |
110 iMemSpyDriver->Close(); |
116 delete iMemSpyDriver; |
111 delete iMemSpyDriver; |
117 } |
112 } |
118 |
113 |
119 #ifdef _DEBUG |
114 LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying sink..." ); |
120 RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying sink..." ); |
|
121 #endif |
|
122 delete iSink; |
115 delete iSink; |
123 |
116 |
124 #ifdef _DEBUG |
117 LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - END" ); |
125 RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - END" ); |
|
126 #endif |
|
127 } |
118 } |
128 |
119 |
129 |
120 |
130 void CMemSpyEngineImp::ConstructL() |
121 void CMemSpyEngineImp::ConstructL() |
131 { |
122 { |
132 #ifdef _DEBUG |
123 LOG( "CMemSpyEngineImp::ConstructL() - START" ); |
133 RDebug::Printf( "CMemSpyEngineImp::ConstructL() - START" ); |
|
134 #endif |
|
135 // |
124 // |
136 iFsSession.SetSessionPath( _L("\\") ); |
125 iFsSession.SetSessionPath( _L("\\") ); |
137 |
126 |
138 // Starting the server before the driver connection is made |
|
139 // ensures that only one instance of MemSpy can run (either the S60 |
|
140 // UI or the console UI ). |
|
141 iServer = CMemSpyEngineServer::NewL( iEngine ); |
127 iServer = CMemSpyEngineServer::NewL( iEngine ); |
142 // |
128 |
143 iMemSpyDriver = new(ELeave) RMemSpyDriverClient(); |
129 iMemSpyDriver = new(ELeave) RMemSpyDriverClient(); |
144 const TInt error = Driver().Open(); |
130 const TInt error = Driver().Open(); |
145 User::LeaveIfError( error ); |
131 User::LeaveIfError( error ); |
146 // |
132 // |
147 InstallSinkL( ESinkTypeDebug ); |
133 InstallSinkL( ESinkTypeDebug ); |
161 ConstructHelpersL(); |
147 ConstructHelpersL(); |
162 // |
148 // |
163 iHelperSysMemTracker = CMemSpyEngineHelperSysMemTracker::NewL( iEngine ); |
149 iHelperSysMemTracker = CMemSpyEngineHelperSysMemTracker::NewL( iEngine ); |
164 iMidwife->AddObserverL( *this ); |
150 iMidwife->AddObserverL( *this ); |
165 |
151 |
166 #ifdef _DEBUG |
152 LOG( "CMemSpyEngineImp::ConstructL() - END" ); |
167 RDebug::Printf( "CMemSpyEngineImp::ConstructL() - END" ); |
|
168 #endif |
|
169 } |
153 } |
170 |
154 |
171 |
155 |
172 void CMemSpyEngineImp::ConstructHelpersL() |
156 void CMemSpyEngineImp::ConstructHelpersL() |
173 { |
157 { |
174 #ifdef _DEBUG |
158 LOG( "CMemSpyEngineImp::ConstructHelpersL() - START" ); |
175 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - START" ); |
159 |
176 #endif |
160 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Heap..." ); |
177 |
|
178 #ifdef _DEBUG |
|
179 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Heap..." ); |
|
180 #endif |
|
181 iHelperHeap = CMemSpyEngineHelperHeap::NewL( iEngine ); |
161 iHelperHeap = CMemSpyEngineHelperHeap::NewL( iEngine ); |
182 |
162 |
183 #ifdef _DEBUG |
163 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Stack..." ); |
184 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Stack..." ); |
|
185 #endif |
|
186 iHelperStack = CMemSpyEngineHelperStack::NewL( iEngine ); |
164 iHelperStack = CMemSpyEngineHelperStack::NewL( iEngine ); |
187 |
165 |
188 #ifdef _DEBUG |
166 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Code Segments..." ); |
189 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Code Segments..." ); |
|
190 #endif |
|
191 iHelperCodeSegment = CMemSpyEngineHelperCodeSegment::NewL( iEngine ); |
167 iHelperCodeSegment = CMemSpyEngineHelperCodeSegment::NewL( iEngine ); |
192 |
168 |
193 #ifdef _DEBUG |
169 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Chunk..." ); |
194 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Chunk..." ); |
|
195 #endif |
|
196 iHelperChunk = CMemSpyEngineHelperChunk::NewL( iEngine ); |
170 iHelperChunk = CMemSpyEngineHelperChunk::NewL( iEngine ); |
197 |
171 |
198 #ifdef _DEBUG |
172 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Thread..." ); |
199 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Thread..." ); |
|
200 #endif |
|
201 iHelperThread = CMemSpyEngineHelperThread::NewL( iEngine ); |
173 iHelperThread = CMemSpyEngineHelperThread::NewL( iEngine ); |
202 |
174 |
203 #ifdef _DEBUG |
175 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Process..." ); |
204 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Process..." ); |
|
205 #endif |
|
206 iHelperProcess = CMemSpyEngineHelperProcess::NewL( iEngine ); |
176 iHelperProcess = CMemSpyEngineHelperProcess::NewL( iEngine ); |
207 |
177 |
208 #ifdef _DEBUG |
178 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Server..." ); |
209 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Server..." ); |
|
210 #endif |
|
211 iHelperServer = CMemSpyEngineHelperServer::NewL( iEngine ); |
179 iHelperServer = CMemSpyEngineHelperServer::NewL( iEngine ); |
212 |
180 |
213 #ifdef _DEBUG |
181 LOG( "CMemSpyEngineImp::ConstructHelpersL() - AO..." ); |
214 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - AO..." ); |
|
215 #endif |
|
216 iHelperActiveObject = CMemSpyEngineHelperActiveObject::NewL( iEngine ); |
182 iHelperActiveObject = CMemSpyEngineHelperActiveObject::NewL( iEngine ); |
217 |
183 |
218 #ifdef _DEBUG |
184 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Kernel Containers..." ); |
219 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Kernel Containers..." ); |
|
220 #endif |
|
221 iHelperKernelContainers = CMemSpyEngineHelperKernelContainers::NewL( iEngine ); |
185 iHelperKernelContainers = CMemSpyEngineHelperKernelContainers::NewL( iEngine ); |
222 |
186 |
223 #ifdef _DEBUG |
187 LOG( "CMemSpyEngineImp::ConstructHelpersL() - File System..." ); |
224 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - File System..." ); |
|
225 #endif |
|
226 iHelperFileSystem = CMemSpyEngineHelperFileSystem::NewL( iEngine ); |
188 iHelperFileSystem = CMemSpyEngineHelperFileSystem::NewL( iEngine ); |
227 |
189 |
228 #ifdef _DEBUG |
190 LOG( "CMemSpyEngineImp::ConstructHelpersL() - ECOM..." ); |
229 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - ECOM..." ); |
|
230 #endif |
|
231 iHelperECom = CMemSpyEngineHelperECom::NewL( iEngine ); |
191 iHelperECom = CMemSpyEngineHelperECom::NewL( iEngine ); |
232 |
192 |
233 #ifdef _DEBUG |
193 LOG( "CMemSpyEngineImp::ConstructHelpersL() - FBSERV..." ); |
234 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - FBSERV..." ); |
|
235 #endif |
|
236 iHelperFbServ = CMemSpyEngineHelperFbServ::NewL( iEngine ); |
194 iHelperFbServ = CMemSpyEngineHelperFbServ::NewL( iEngine ); |
237 |
195 |
238 #ifdef _DEBUG |
196 LOG( "CMemSpyEngineImp::ConstructHelpersL() - ROM..." ); |
239 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - ROM..." ); |
|
240 #endif |
|
241 iHelperROM = CMemSpyEngineHelperROM::NewL( iEngine ); |
197 iHelperROM = CMemSpyEngineHelperROM::NewL( iEngine ); |
242 |
198 |
243 #ifdef _DEBUG |
199 LOG( "CMemSpyEngineImp::ConstructHelpersL() - RAM..." ); |
244 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - RAM..." ); |
|
245 #endif |
|
246 iHelperRAM = CMemSpyEngineHelperRAM::NewL( iEngine ); |
200 iHelperRAM = CMemSpyEngineHelperRAM::NewL( iEngine ); |
247 |
201 |
248 #ifdef _DEBUG |
202 LOG( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer..." ); |
249 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer..." ); |
|
250 #endif |
|
251 |
203 |
252 TInt err = iHelperWindowServerLoader.Load( _L("memspywindowserverhelper.dll") ); |
204 TInt err = iHelperWindowServerLoader.Load( _L("memspywindowserverhelper.dll") ); |
253 #ifdef _DEBUG |
205 LOG( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer load err: %d", err ); |
254 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer load err: %d", err ); |
|
255 #endif |
|
256 if ( !err ) |
206 if ( !err ) |
257 { |
207 { |
258 #ifdef __WINS__ // ordinal is different |
208 #ifdef __WINS__ // ordinal is different |
259 TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 3 ); |
209 TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 3 ); |
260 #else |
210 #else |
261 TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 1 ); |
211 TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 1 ); |
262 #endif |
212 #endif |
263 if ( entry != NULL ) |
213 if ( entry != NULL ) |
264 { |
214 { |
265 iHelperWindowServer = (MMemSpyEngineHelperWindowServer*) entry(); |
215 typedef MMemSpyEngineHelperWindowServer* (*TEntryFn)(void); |
|
216 TRAP(err, iHelperWindowServer = ((TEntryFn)entry)()); |
|
217 if (err) |
|
218 { |
|
219 LOG("err from memspywindowserverhelper.dll - %d", err); |
|
220 } |
266 } |
221 } |
267 } |
222 } |
268 |
223 |
269 #ifdef _DEBUG |
224 LOG( "CMemSpyEngineImp::ConstructHelpersL() - CondVar..." ); |
270 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - CondVar..." ); |
|
271 #endif |
|
272 iHelperCondVar = CMemSpyEngineHelperCondVar::NewL( iEngine ); |
225 iHelperCondVar = CMemSpyEngineHelperCondVar::NewL( iEngine ); |
273 |
226 |
274 #ifdef _DEBUG |
227 LOG( "CMemSpyEngineImp::ConstructHelpersL() - END" ); |
275 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - END" ); |
|
276 #endif |
|
277 } |
228 } |
278 |
229 |
279 |
230 |
280 RFs& CMemSpyEngineImp::FsSession() |
231 RFs& CMemSpyEngineImp::FsSession() |
281 { |
232 { |
332 TMemSpySinkType CMemSpyEngineImp::SinkType() |
283 TMemSpySinkType CMemSpyEngineImp::SinkType() |
333 { |
284 { |
334 return iSink->Type(); |
285 return iSink->Type(); |
335 } |
286 } |
336 |
287 |
337 |
|
338 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType ) |
288 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType ) |
339 { |
289 { |
340 #ifdef _DEBUG |
290 InstallSinkL( aType, KNullDesC ); |
341 RDebug::Printf( "CMemSpyEngineImp::InstallSinkL() - START - switching sink from %d to %d...", (iSink != NULL ? iSink->Type() : -1), aType ); |
291 } |
342 #endif |
292 |
|
293 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType, const TDesC& aRootFolder ) |
|
294 { |
|
295 LOG( "CMemSpyEngineImp::InstallSinkL() - START - switching sink from %d to %d...", (iSink != NULL ? iSink->Type() : -1), aType ); |
343 // |
296 // |
344 CMemSpyEngineOutputSink* sink = NULL; |
297 CMemSpyEngineOutputSink* sink = NULL; |
345 // |
298 // |
346 switch( aType ) |
299 switch( aType ) |
347 { |
300 { |
348 case ESinkTypeDebug: |
301 case ESinkTypeDebug: |
349 sink = CMemSpyEngineOutputSinkDebug::NewL( iEngine ); |
302 sink = CMemSpyEngineOutputSinkDebug::NewL( iEngine ); |
350 break; |
303 break; |
351 case ESinkTypeFile: |
304 case ESinkTypeFile: |
352 sink = CMemSpyEngineOutputSinkFile::NewL( iEngine ); |
305 sink = CMemSpyEngineOutputSinkFile::NewL( iEngine, aRootFolder ); |
353 break; |
306 break; |
354 } |
307 } |
355 // |
308 // |
356 delete iSink; |
309 delete iSink; |
357 iSink = sink; |
310 iSink = sink; |
358 // |
311 // |
359 #ifdef _DEBUG |
312 LOG( "CMemSpyEngineImp::InstallSinkL() - END - sink type: %d", iSink->Type() ); |
360 RDebug::Printf( "CMemSpyEngineImp::InstallSinkL() - END - sink type: %d", iSink->Type() ); |
|
361 #endif |
|
362 } |
313 } |
363 |
314 |
364 |
315 |
365 void CMemSpyEngineImp::ListOpenFilesL() |
316 void CMemSpyEngineImp::ListOpenFilesL() |
366 { |
317 { |