Hopper Log说明3

 

Hopper produces a log file that contains a system snapshot that will help you understand system state just prior to logging. This file is overwritten each time Hopper    logs so it will always represent the last state before the system stopped. The log file contains the following sections:

    Summary: 

    The following items are logged:

       Log statement Explanation

       Build = 13349 (OS 0). The current build.

       Random Seed = 798966. Random seed used to run Hopper.

       Previous runtime = 15hrs 35 mins. Runtime last logged.

       Ended by: Default system crash unless terminated by user!  

       ACTIONS/min = 89

       Total States = 299

       explaie:

       build:OS 0 indicates that an error occurred, and Hopper did not meet its time limit. 

       Random Seed:It is sometimes possible to re-create stress runs by passing in a known seed with the /s option (see hopper.html for all the command line options).

       Previous runtime: This represents the number of hours the device lasted under the previous test.

       Ended by: Event that ended the test. This information is detailed below under Hopper Errors.

       ACTIONS/min: Average number of actions executed by Hopper per minute. A Hopper action is a click or button push done by Hopper, including a click that does not do anything.

    Total States: Total number of windows visited by Hopper during the runtime, including duplicates.

 

Finding process and module information

    Each process has a 32M virtual address range. The following output sample uses the Target Control debugging command gi proc to show process information.

    Windows CE>gi proc

PROC: Name           hProcess: CurAKY :dwVMBase:CurZone

P00: NK.EXE          01fff002 00000001 02000000 00000000

P01: filesys.exe     01ff8f1a 00000002 04000000 00000000

P02: shell.exe       21fdd46a 00000004 06000000 00000000

P03: device.exe      81fe5e16 00000008 08000000 00000000

P04: gwes.exe        81fe5fc2 00000010 0a000000 00000000

P05: shell32.exe     01e99802 00000020 0c000000 00000000

P06: connmgr.exe     81e99f66 00000040 0e000000 00000000

P07: cprog.exe       c1df1d92 00000080 10000000 00000000

    DLLs grow down from 0x01FFFFFF to 0x00600000

       1.Coredll.dll is always at 0x01Fxxxxx

       2.You know addresses in this range belong to a DLL

       3.Code addresses below 0x00600000 belong to an exe.

       hProcess: process handle

CurAKY: process access key

dwVMBase: virtual memory base

    The following output sample uses the Target Control debugging command gi mod to show module information.

    Windows CE>gi mod

MOD: Name            pModule :dwInUSE :dwVMBase:CurZone

M00: htmlview.dll    81d6ed54 00000020 00ec0000 00000000

M01: cplmain.cpl     81ddcb78 00000020 01310000 00000000

M56: ceddk.dll       81fcaa34 00000018 01000000 00000000

M57: com16550.dll    81fdbd24 00000008 00f50000 00000000

M58: toolhelp.dll    81fdbacc 00000004 01f40000 00000000

M59: coredll.dll     81ffd000 0000007f 01f80000 00001000

    dwInUSE, cross-referenced with CurAKY, tells you which processes have loaded a given DLL.

 

Hopper error:

   Hopper always logs the reason why it stopped. The default message is Default System Crash. This message means that the system crashed before Hopper had a chance to exit, and the log created is the last log logged. 

   Other possible errors are:

   Start menu not responding

       Keystrokes are being sent, but the Start menu cannot switch to a different program. Usually, this occurs when another application is deadlocked, or blocking the Shell threads. Your best bet in this case is to examine the system threads using NKDebugx.dll. 

   Test was skipped for 30 minutes

       Hopper has not run for 30 minutes. Because Hopper is run at a higher priority than other processes, this indicates another resource issue. If this message appears, not even high-priority applications are running. Check the system memory or any other threads that are spinning.

   Stuck in same window for x minutes

       The window has not changed for some time. It is possible for Pocket PC PE device to reach the PUK screen running under Hopper – these runs should not contribute to the MTTF average. 

   File errors

       If Hopper detects a problem writing to the logfile it will notify the user by with a dialog box, and present the error code for the failure. This type of error usually indicates some catastrophic problem, such as the filesystem driver crashed or out of disk space.

   Over target runtime

       Allocated time to run has been exceeded.

       If Hopper goes over the time it is allowed to run, it writes this message to the log file and exits.

   Failed to launch application

       This error occurs if Hopper is not able to open/launch an application; it writes this message to the log file and exits. This occurs when Hopper is running in application mode (/a),

   Radio Reboot

      When a radio reboot message box appears on the device, Hopper exits and writes this message to the log file. 

      Note: This message only appears in PPC_PE.

   Received a stop event from user

      If Hopper is running externally with /k option, and a user terminates the process, then Hopper exits with this error message.

 

     Is the crash in a DLL?

    Sometimes all you know is where it crashed:

         Exception 00e Thread=81d6f328 Proc=a1eba6ea 'cprog.exe'

         AKY=00000081 PC=00c9eff1 ESP=1009f1b0 EA=00001234

    Check if PC is between 0x00600000 and 0x01FFFFFF. If yes, then it is in a dll. The following steps might help to uncover which dll:

    1. At the command prompt, type 

    gi mod

Then find the dwVMBase that’s closest to the PC without going over:

M06: htmlview.dll    81d109dc 00000080 00c20000 00000000

M07: find.dll        81d3cc58 00000080 00c30000 00000000

M08: tpcutil.dll     81d3c804 00000080 00c50000 00000000

M09: vbarcall.dll    81d6f94c 00000020 00cb0000 00000000

    2. Subtract the exception address from the dwVMBase: 

     00c9eff1 – 00c50000 = 0004eff1

    3. Look in the map file of the DLL for the function that contains that address: Tpcutil.map:

 0001:0004df59 ?OnOptDlgInit@ClogAppView@@IAEJPAUHWND__@@@Z 1004ef59 f   logav.obj

 0001:0004e095 ?OnOptDlgEnd@ClogAppView@@IAEJPAUHWND__@@@Z 1004f095 f   logav.obj

    4. Subtract the function start address: 

        4eff1 – 4ef59 = x98

    5. Set WINCECOD=1

    6. Look in the .COD file under ClogAppView::OnOptDlgInit() at offset 0x98:

?OnOptDlgInit@ClogAppView@@IAEJPAUHWND__@@@Z PROC NEAR ; ClogAppView::OnOptDlgInit

; 504  : {

 01179   55       push    ebp

 0117a   8b ec       mov    ebp, esp

 0117c   83 ec 40    sub    esp, 64; 00000040H

 0117f   57       push    edi

 01180   89 4d c0    mov    DWORD PTR _this$[ebp],

; 525  :     int  iIndex;

; 526  : 

; 527  :     *(char*)0x1234 = 0;

 01211   c6 05 34 12 00

  00 00       mov    BYTE PTR ds:4660, 0

   

Data Aborts:  

    will occur when the processor encounters invalid DATA such as loading a register with the contents of an invalid memory address. 

Prefetch Aborts:  

    A function of the pipelining nature of the ARM processor and will occur whenever the processor encounters an invalid INSTRUCTION. 

Raise Exception: 

    This is most often sourced from a handled exception where the (MSTF) programmer has anticipated a problem and handling the exception for you. Often these are not, critical errors (it depends). 

 

Use a sample to explaie the errors:    

    Data Abort: Thread=9352cc9c Proc=90876ea0 'shell32.exe'

    AKY=00000005 

    PC=03f74680(coredll.dll+0x00014680) 

    RA=03257104(aygshell.dll+0x00037104) 

    BVA=060000e0 

    FSR=00000007

 

    AKY "Access Key“: Process slot bitmask corresponding to processes the excepting thread has access to.

PC "Program Counter" 

    RA "Return Address“

    BVA "Base Virtual Address" 

    FSR "Fault Status Register"   

 

More informaiton about debug, please reference:

http://blogs.msdn.com/b/kitlfirst/

http://blogs.msdn.com/b/hopperx/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mujoco Hopper是一种基于物理仿真的机器人模型。它的设计灵感来自草原上跳跃的动作,模拟了机器人在地面上跳跃的运动。这个模型具有简单却又非常灵活的结构,使得它能够通过强大的运动能力来完成各种任务。 Mujoco Hopper的外观是一个由连接起来的几个关节和连杆组成的结构。每个关节都有特定的运动范围和运动速度,使得机器人能够复杂地移动和跳跃。通过改变关节的运动角度和速度,我们可以控制机器人的动作,让它实现各种跳跃动作和运动模式。 Mujoco Hopper的仿真需要使用Mujoco物理仿真引擎,它能够准确地模拟机器人和环境之间的物理交互。通过在仿真环境中测试不同的控制算法和参数设置,我们可以优化机器人的运动能力和稳定性。这些优化方法包括使用强化学习算法来训练机器人自主学习跳跃动作,并通过反馈调整机器人的控制参数。 Mujoco Hopper广泛应用于机器人领域的研究和开发中。通过使用这个模型,我们可以探索机器人在跳跃运动中的稳定性、能量损耗和灵活性等特性。同时,Mujoco Hopper也为机器人控制算法的优化提供了一个可靠的仿真平台,可以加速机器人设计和开发的过程。 总之,Mujoco Hopper是一个基于物理仿真的机器人模型,它通过跳跃动作展示了机器人的运动能力和灵活性。它为机器人研究和控制算法的开发提供了一个重要的工具和平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值