Logger.exe is no substitute for a KITL debugger connection

This entry is dedicated to my readers troubled by Logger.exe and its sometimes incomplete log files. I carefully review all comments made to HoppeRx and Logger.exe (and its issues) appear to be a recurring theme.


For those unfamiliar with the tool, Logger.exe is a lightweight utility shipped with the Logo Test Kit that will capture debug messages to a log file either on your device or storage card. Often these messages are verbose and unreadable to the untrained eye, but are a crucial investigation tool for the savvy debugger. The purpose of this entry is to address some issues and complaints some readers have logged (pun intended) about incomplete logs being written to their device.


This entry started out as a defense of Logger and how the advent of Windows Mobile 5.0 and RNDIS/USB debugging should minimize the need for such a tool. But after editing out all my poor grammar, I realized you (the customer) don’t really care – you are focused on shipping your device and simply want the info. Fair enough.


So with that, I open HoppeRx up to you and want to hear about your experiences with the tool. Please keep in mind that this is a community site and the more constructive and detailed your suggestions are, the more likely they will be addressed. I make no promises that bugs reported will be fixed, but I can assure you each will be evaluated by me and my findings reported back to the community.

Comments (9)

  1. Frank says:

    we see from MS’s docs that "A Data abort in appman.exe" has been fixed which was affecting MTTF to improve device performance. But when we run Hopper with PB, we’ve seen a Data Abort with Appman quite a few times. The data abort is appeared when appman.exe call tpctuil.dll, and the end of the comment lists some info. So I want to ask which Data Abort has been fixed, and is it been fixed for device only state or PB debugging state?

    P.S. info for the break:

    PB output window:

    12192476 PID:c73a18d2 TID:c73a1526 MTTF: ForegroundWindow – Windowsappman.exe (ProcID 0x47754baa, ThreadID 0x47773266), class MSStart, title 12193434 PID:e6fa0f92 TID:e6c8295a Data Abort: Thread=8706fcb0 Proc=843478a0 ‘appman.exe’

    12193435 PID:e6fa0f92 TID:e6c8295a AKY=00010001 PC=027404e0(tpcutil.dll+0x000904e0) RA=0270755c(tpcutil.dll+0x0005755c) BVA=23ebd674 FSR=00000007

    and the Call Stack:

    PCUTIL!timeSetEvent + 4 bytes

    TPCUTIL!AppViewBase::ScheduleNextSideProcessing() line 1229 + 32 bytes

    TPCUTIL!AppViewBase::ResumeUpdates() line 1050

    TPCUTIL!AppViewBase::Initialize() line 2218

    TPCUTIL!AMAppView(void * 0x2202fb00) line 54 + 32 bytes

    TPCUTIL!AMLog() line 123

    APPMAN!AppMan::OnStart() line 1062 + 20 bytes

    APPMAN!AppMan::HandlePeerRequest() line 1129 + 12 bytes

    APPMAN!AppMan::v_WndProc(long 0x2202fc80) line 1289

    SHUTIL!CWndProc::s_WndProc() line 87 + 36 bytes

    COREDLL!xxx_PerformCallBack4() line 55

    GWES!WindowProcCallback(unsigned int 0x000d5c28, long 0x0000004a, bool * 0xe6fa0f92) line 2325 + 20 bytes

    GWES!CWindow::CallWindowProcWInternal(CePtr_t<long (__cdecl*)(HWND__ *,unsigned int,unsigned int,long)> {…}, SendMsgEntry_t * 0x00000000) line 2502 + 40 bytes

    GWES!MsgQueue::SendMessageWithOptions(unsigned int 0x00000000) line 3728 + 32 bytes

    GWES!MsgQueue::SendMessageW_I() line 4720 + 28 bytes

    COREDLL!DoSendMessageWInGwe() line 2641 + 32 bytes

    COREDLL!SendMessageW() line 2926

    APPMAN!SendAppManRequest() line 657 + 28 bytes

    APPMAN!HandleCommandLineStartupRequest(const unsigned short * 0x000300f8, const MultiString * 0x2202fdac) line 779 + 16 bytes

    APPMAN!HandleCommandLine() line 884 + 32 bytes

    APPMAN!WinMain() line 1168 + 12 bytes

    COREDLL!MainThreadBaseFunc(HINSTANCE__ * 0x87c60930, unsigned long 0x00000000, unsigned long 0x00000000, unsigned long 0x00010000) line 556

  2. shende says:

    Hmmm – I keep re-reading the above post trying to understand how it relates to the Logger post above. My guess is that it does not and Frank is simply curious as to why he is seeing the appman abort he posted (please correct me if I am wrong).

    I can poke around and see what was fixed and if we have seen the issue above.

  3. Jarold says:


    Which AKU are you seeing this on?


    This might be the data abort we were looked at regarding amstubs.cpp where AMAppView() failed to check for a NULL pointer on one of the arguments.

    If this is the same data abort, then it should be fixed in AKU2+


  4. Bill says:


    Could you please tell me how auto run the logger.exe from SD card and log to SD card? Because that always log to device as the logger.exe running. Thanks!

  5. shene says:

    Sorry for the delay, we haven’t forgot about you. I am actively trying to find this particular tools’ owner so we can get you the most accurate information possible. Thanks for your patience.

  6. Ahmed says:


    i used the logger utility to improve device stability, the first problem was how can i store the logs into storage card instead of device memory. i found that i need to set this registry key to point the debug log to certain path


    DataPath=Storage Card

    is logger.exe source code available so i can display extended exception information, or detailed call stack , the debug output from a stack fault exception in GWES is like this

    MSG @0:0:24.451 [Stack fault]: Thread=8654dbac Proc=80b94280 ‘gwes.exe’

    MSG @0:0:24.451 AKY=00040011 PC=80289780(NK.EXE+0x00039780) RA=8027ab28(NK.EXE+0x0002ab28) BVA=26020fe4 FSR=00000007

    while i need to have extended information about the stack fault, is there sometool that can display this extended information? or the source code of logger.exe  and i make the necessary changes?

  7. anonymous says:

    i have tried setting the path mentioned buth in that case it read the inserted storage card as Storage Card2 and make one more folder on the windows mobile device with the name Storage Card.

    Please help me regarding how to log a hopper msgs in Storage Card. Because when i run logger.exe it doesn,t prompt for any msg regrading storing the log on Storage Card.

  8. Chris says:

    Why do some retail messages show up in the logger output and some don’t?  We have a serial console that also outputs the retail messages, and I see messages that show up in both places, and some that only show up in the console.  

Skip to main content