diff -r 8f8df8006c40 -r 3406c99bc375 memspy/Engine/Source/Helpers/MemSpyEngineHelperStack.cpp --- a/memspy/Engine/Source/Helpers/MemSpyEngineHelperStack.cpp Mon Jun 21 17:25:56 2010 +0300 +++ b/memspy/Engine/Source/Helpers/MemSpyEngineHelperStack.cpp Thu Jul 15 20:25:38 2010 +0300 @@ -250,22 +250,36 @@ if ( r == KErrNone ) { - while ( r == KErrNone ) - { - iEngine.Sink().OutputBinaryDataL( KStackDataPrefix, pData.Ptr(), (const TUint8*) info.iUserStackBase, pData.Length() ); - // - if ( remaining > 0 ) + if ( aType == EMemSpyDriverDomainUser ) { + while ( r == KErrNone ) { - info.iUserStackBase += pData.Length(); - r = iEngine.Driver().GetStackDataNext( aThread.Id(), pData, remaining, aType, aEntireStack ); + iEngine.Sink().OutputBinaryDataL( KStackDataPrefix, pData.Ptr(), (const TUint8*) info.iUserStackBase, pData.Length() ); + // + if ( remaining > 0 ) + { + info.iUserStackBase += pData.Length(); + r = iEngine.Driver().GetStackDataNext( aThread.Id(), pData, remaining, aType, aEntireStack ); + } + else + { + break; + } } - else - { - break; + } + else if ( aType == EMemSpyDriverDomainKernel ) { + while ( r == KErrNone ) { + + iEngine.Sink().OutputBinaryDataL( KStackDataPrefix, pData.Ptr(), (const TUint8*) info.iSupervisorStackBase, pData.Length() ); + // + if ( remaining > 0 ) { + info.iSupervisorStackBase += pData.Length(); + r = iEngine.Driver().GetStackDataNext( aThread.Id(), pData, remaining, aType, aEntireStack ); } - } + else { + break; + } + } } - } CleanupStack::PopAndDestroy( data ); @@ -276,6 +290,7 @@ iEngine.Sink().OutputLineFormattedL( KMemSpyMarkerStackData, &KMemSpySinkTagClose, (TUint) aThread.Id() ); iEngine.Sink().DataStreamEndL(); } +} EXPORT_C void CMemSpyEngineHelperStack::OutputStackInfoForDeviceL()