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; |
81 delete iHelperStack; |
82 delete iHelperStack; |
82 delete iHelperCodeSegment; |
83 delete iHelperCodeSegment; |
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" ); |
118 } |
126 #endif |
119 |
127 } |
120 |
128 |
121 void CMemSpyEngineImp::ConstructL() |
129 |
122 { |
130 void CMemSpyEngineImp::ConstructL( TBool aStartServer ) |
123 LOG( "CMemSpyEngineImp::ConstructL() - START" ); |
131 { |
|
132 #ifdef _DEBUG |
|
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 |
127 iServer = CMemSpyEngineServer::NewL( iEngine ); |
139 // ensures that only one instance of MemSpy can run (either the S60 |
|
140 // UI or the console UI ). |
|
141 if (aStartServer) |
|
142 { |
|
143 iServer = CMemSpyEngineServer::NewL( iEngine ); |
|
144 } |
|
145 |
128 |
146 iMemSpyDriver = new(ELeave) RMemSpyDriverClient(); |
129 iMemSpyDriver = new(ELeave) RMemSpyDriverClient(); |
147 const TInt error = Driver().Open(); |
130 const TInt error = Driver().Open(); |
148 User::LeaveIfError( error ); |
131 User::LeaveIfError( error ); |
149 // |
132 // |
164 ConstructHelpersL(); |
147 ConstructHelpersL(); |
165 // |
148 // |
166 iHelperSysMemTracker = CMemSpyEngineHelperSysMemTracker::NewL( iEngine ); |
149 iHelperSysMemTracker = CMemSpyEngineHelperSysMemTracker::NewL( iEngine ); |
167 iMidwife->AddObserverL( *this ); |
150 iMidwife->AddObserverL( *this ); |
168 |
151 |
169 #ifdef _DEBUG |
152 LOG( "CMemSpyEngineImp::ConstructL() - END" ); |
170 RDebug::Printf( "CMemSpyEngineImp::ConstructL() - END" ); |
|
171 #endif |
|
172 } |
153 } |
173 |
154 |
174 |
155 |
175 void CMemSpyEngineImp::ConstructHelpersL() |
156 void CMemSpyEngineImp::ConstructHelpersL() |
176 { |
157 { |
177 #ifdef _DEBUG |
158 LOG( "CMemSpyEngineImp::ConstructHelpersL() - START" ); |
178 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - START" ); |
159 |
179 #endif |
160 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Heap..." ); |
180 |
|
181 #ifdef _DEBUG |
|
182 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Heap..." ); |
|
183 #endif |
|
184 iHelperHeap = CMemSpyEngineHelperHeap::NewL( iEngine ); |
161 iHelperHeap = CMemSpyEngineHelperHeap::NewL( iEngine ); |
185 |
162 |
186 #ifdef _DEBUG |
163 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Stack..." ); |
187 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Stack..." ); |
|
188 #endif |
|
189 iHelperStack = CMemSpyEngineHelperStack::NewL( iEngine ); |
164 iHelperStack = CMemSpyEngineHelperStack::NewL( iEngine ); |
190 |
165 |
191 #ifdef _DEBUG |
166 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Code Segments..." ); |
192 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Code Segments..." ); |
|
193 #endif |
|
194 iHelperCodeSegment = CMemSpyEngineHelperCodeSegment::NewL( iEngine ); |
167 iHelperCodeSegment = CMemSpyEngineHelperCodeSegment::NewL( iEngine ); |
195 |
168 |
196 #ifdef _DEBUG |
169 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Chunk..." ); |
197 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Chunk..." ); |
|
198 #endif |
|
199 iHelperChunk = CMemSpyEngineHelperChunk::NewL( iEngine ); |
170 iHelperChunk = CMemSpyEngineHelperChunk::NewL( iEngine ); |
200 |
171 |
201 #ifdef _DEBUG |
172 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Thread..." ); |
202 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Thread..." ); |
|
203 #endif |
|
204 iHelperThread = CMemSpyEngineHelperThread::NewL( iEngine ); |
173 iHelperThread = CMemSpyEngineHelperThread::NewL( iEngine ); |
205 |
174 |
206 #ifdef _DEBUG |
175 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Process..." ); |
207 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Process..." ); |
|
208 #endif |
|
209 iHelperProcess = CMemSpyEngineHelperProcess::NewL( iEngine ); |
176 iHelperProcess = CMemSpyEngineHelperProcess::NewL( iEngine ); |
210 |
177 |
211 #ifdef _DEBUG |
178 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Server..." ); |
212 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Server..." ); |
|
213 #endif |
|
214 iHelperServer = CMemSpyEngineHelperServer::NewL( iEngine ); |
179 iHelperServer = CMemSpyEngineHelperServer::NewL( iEngine ); |
215 |
180 |
216 #ifdef _DEBUG |
181 LOG( "CMemSpyEngineImp::ConstructHelpersL() - AO..." ); |
217 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - AO..." ); |
|
218 #endif |
|
219 iHelperActiveObject = CMemSpyEngineHelperActiveObject::NewL( iEngine ); |
182 iHelperActiveObject = CMemSpyEngineHelperActiveObject::NewL( iEngine ); |
220 |
183 |
221 #ifdef _DEBUG |
184 LOG( "CMemSpyEngineImp::ConstructHelpersL() - Kernel Containers..." ); |
222 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Kernel Containers..." ); |
|
223 #endif |
|
224 iHelperKernelContainers = CMemSpyEngineHelperKernelContainers::NewL( iEngine ); |
185 iHelperKernelContainers = CMemSpyEngineHelperKernelContainers::NewL( iEngine ); |
225 |
186 |
226 #ifdef _DEBUG |
187 LOG( "CMemSpyEngineImp::ConstructHelpersL() - File System..." ); |
227 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - File System..." ); |
|
228 #endif |
|
229 iHelperFileSystem = CMemSpyEngineHelperFileSystem::NewL( iEngine ); |
188 iHelperFileSystem = CMemSpyEngineHelperFileSystem::NewL( iEngine ); |
230 |
189 |
231 #ifdef _DEBUG |
190 LOG( "CMemSpyEngineImp::ConstructHelpersL() - ECOM..." ); |
232 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - ECOM..." ); |
|
233 #endif |
|
234 iHelperECom = CMemSpyEngineHelperECom::NewL( iEngine ); |
191 iHelperECom = CMemSpyEngineHelperECom::NewL( iEngine ); |
235 |
192 |
236 #ifdef _DEBUG |
193 LOG( "CMemSpyEngineImp::ConstructHelpersL() - FBSERV..." ); |
237 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - FBSERV..." ); |
|
238 #endif |
|
239 iHelperFbServ = CMemSpyEngineHelperFbServ::NewL( iEngine ); |
194 iHelperFbServ = CMemSpyEngineHelperFbServ::NewL( iEngine ); |
240 |
195 |
241 #ifdef _DEBUG |
196 LOG( "CMemSpyEngineImp::ConstructHelpersL() - ROM..." ); |
242 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - ROM..." ); |
|
243 #endif |
|
244 iHelperROM = CMemSpyEngineHelperROM::NewL( iEngine ); |
197 iHelperROM = CMemSpyEngineHelperROM::NewL( iEngine ); |
245 |
198 |
246 #ifdef _DEBUG |
199 LOG( "CMemSpyEngineImp::ConstructHelpersL() - RAM..." ); |
247 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - RAM..." ); |
|
248 #endif |
|
249 iHelperRAM = CMemSpyEngineHelperRAM::NewL( iEngine ); |
200 iHelperRAM = CMemSpyEngineHelperRAM::NewL( iEngine ); |
250 |
201 |
251 #ifdef _DEBUG |
202 LOG( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer..." ); |
252 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer..." ); |
|
253 #endif |
|
254 |
203 |
255 TInt err = iHelperWindowServerLoader.Load( _L("memspywindowserverhelper.dll") ); |
204 TInt err = iHelperWindowServerLoader.Load( _L("memspywindowserverhelper.dll") ); |
256 #ifdef _DEBUG |
205 LOG( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer load err: %d", err ); |
257 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer load err: %d", err ); |
|
258 #endif |
|
259 if ( !err ) |
206 if ( !err ) |
260 { |
207 { |
261 #ifdef __WINS__ // ordinal is different |
208 #ifdef __WINS__ // ordinal is different |
262 TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 3 ); |
209 TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 3 ); |
263 #else |
210 #else |
264 TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 1 ); |
211 TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 1 ); |
265 #endif |
212 #endif |
266 if ( entry != NULL ) |
213 if ( entry != NULL ) |
267 { |
214 { |
268 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 } |
269 } |
221 } |
270 } |
222 } |
271 |
223 |
272 #ifdef _DEBUG |
224 LOG( "CMemSpyEngineImp::ConstructHelpersL() - CondVar..." ); |
273 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - CondVar..." ); |
|
274 #endif |
|
275 iHelperCondVar = CMemSpyEngineHelperCondVar::NewL( iEngine ); |
225 iHelperCondVar = CMemSpyEngineHelperCondVar::NewL( iEngine ); |
276 |
226 |
277 #ifdef _DEBUG |
227 LOG( "CMemSpyEngineImp::ConstructHelpersL() - END" ); |
278 RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - END" ); |
|
279 #endif |
|
280 } |
228 } |
281 |
229 |
282 |
230 |
283 RFs& CMemSpyEngineImp::FsSession() |
231 RFs& CMemSpyEngineImp::FsSession() |
284 { |
232 { |
335 TMemSpySinkType CMemSpyEngineImp::SinkType() |
283 TMemSpySinkType CMemSpyEngineImp::SinkType() |
336 { |
284 { |
337 return iSink->Type(); |
285 return iSink->Type(); |
338 } |
286 } |
339 |
287 |
340 |
|
341 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType ) |
288 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType ) |
342 { |
289 { |
343 #ifdef _DEBUG |
290 InstallSinkL( aType, KNullDesC ); |
344 RDebug::Printf( "CMemSpyEngineImp::InstallSinkL() - START - switching sink from %d to %d...", (iSink != NULL ? iSink->Type() : -1), aType ); |
291 } |
345 #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 ); |
346 // |
296 // |
347 CMemSpyEngineOutputSink* sink = NULL; |
297 CMemSpyEngineOutputSink* sink = NULL; |
348 // |
298 // |
349 switch( aType ) |
299 switch( aType ) |
350 { |
300 { |
351 case ESinkTypeDebug: |
301 case ESinkTypeDebug: |
352 sink = CMemSpyEngineOutputSinkDebug::NewL( iEngine ); |
302 sink = CMemSpyEngineOutputSinkDebug::NewL( iEngine ); |
353 break; |
303 break; |
354 case ESinkTypeFile: |
304 case ESinkTypeFile: |
355 sink = CMemSpyEngineOutputSinkFile::NewL( iEngine ); |
305 sink = CMemSpyEngineOutputSinkFile::NewL( iEngine, aRootFolder ); |
356 break; |
306 break; |
357 } |
307 } |
358 // |
308 // |
359 delete iSink; |
309 delete iSink; |
360 iSink = sink; |
310 iSink = sink; |
361 // |
311 // |
362 #ifdef _DEBUG |
312 LOG( "CMemSpyEngineImp::InstallSinkL() - END - sink type: %d", iSink->Type() ); |
363 RDebug::Printf( "CMemSpyEngineImp::InstallSinkL() - END - sink type: %d", iSink->Type() ); |
|
364 #endif |
|
365 } |
313 } |
366 |
314 |
367 |
315 |
368 void CMemSpyEngineImp::ListOpenFilesL() |
316 void CMemSpyEngineImp::ListOpenFilesL() |
369 { |
317 { |