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