zoukankan      html  css  js  c++  java
  • (OK) 调试cBPM—CentOS7—gdb—gdbserver—问题的解决—完整的调试过程—成功

    +++++++++++++编译Criteria.Tools.Executor————成功———调试

    宿主机:

    codeblocks 全局参数 设置:
    【Settings】->【debugger】->【create config】->【arm-gdb】->【executable path】
    /opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gdb

    【Settings】->【Compiler】->【GNU ARM GCC Compiler For Android】->【Toolchain executable】->【debugger】
    arm-gdb

    codeblocks 局部参数 设置:
    右健单击【Criteria.WorkflowEngine】,选择【Properties】->【debugger】->【debug win32】192.168.0.101:1111

    [root@localhost gdbserver]# pwd
    /opt/android-on-linux/android-ndk-r8e/prebuilt/android-arm/gdbserver
    [root@localhost gdbserver]# ls
    gdbserver
    [root@localhost gdbserver]# adb push gdbserver /data/data/criteria

    [root@localhost lib]# pwd
    /opt/cBPM-android/criteria-lin/lib
    [root@localhost lib]# adb push executer /data/data/criteria


    ----------------------OK---------------------手机:

    shell@mb526:/ $

    getprop |grep ip

    [dhcp.wlan0.ipaddress]: [192.168.0.101]

    export WF_HOME=/data/data/criteria; export CRITERIA_HOME=/data/data/criteria
    cd /data/data/criteria
    ./gdbserver 192.168.0.100:1234 ./executer

        (192.168.0.100是宿主机IP)

    ----------------------OK---------------------宿主机(命令行):

    [root@localhost Tools.Executor]# pwd
    /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor

    [root@localhost Tools.Executor]# ls
    database notepad.txt  temp  TestNotePad.xml executer  Executor-3739-20150407-100423.trace src temp.c  


    ------------------------------------------------------------------------这段不用
    [root@localhost Tools.Executor]# export PATH=$PATH:/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/
    使用上面有问题:
    readchar: Got EOF
    Remote side has terminated connection. GDBserver will reopen the connection.

    ------------------------------------------------------------------------将配置文件复制到 手机
    [root@localhost lib]# pwd
    /opt/cBPM-android/criteria-lin/lib
    [root@localhost lib]# ls
    executer
    [root@localhost lib]# adb push executer /data/data/criteria/

    [root@localhost Tools.Executor]# ls
    database  executer  notepad.txt  src  temp  temp.c  TestNotePad.xml
    [root@localhost Tools.Executor]# pwd
    /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor
    [root@localhost Tools.Executor]# adb push database/ /data/data/criteria/database

    ------------------------------------------------------------------------


    ------------------------------------------------------------------------使用这段
    使用下面可以:
    [root@localhost Tools.Executor]# export PATH=$PATH:/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/

    ------------------------------------------------------------------------
    gdb调试的时候如何带参数
    1,gdb --args ./A V1 V2 V3
    2,gdb ./A,进入gdb后  r V1 V2 V3
    3,gdb ./A,进入gdb后  设置参数set args V1 V2 V3 再直接 r
    ------------------------------------------------------------------------


    ------------------------------------------------------------------------宿主机(命令行):
    [root@localhost Tools.Executor]# arm-linux-androideabi-gdb executer

    (gdb)

    target extended-remote 192.168.0.104:1234

    //192.168.0.101是手机IP
    //target remote 192.168.0.101:1234

    //break main.cpp:63
    //break main.cpp:155
    //break WAPI.cpp:72
    //break bOSXMLHelper.cpp:40

    //break PlatformUtils.hpp:813
    //break MemoryManagerImpl.cpp:37
    //break WorkflowListener.cpp:67

    //break XMLString.hpp:1451
    //break Hashers.hpp:47

    //break RangeToken.cpp:335

    //break XMLRangeFactory.cpp:113

    //break XMLInitializer.cpp:51
    //break XMLInitializer.cpp:62            // 调试到此处,停止
    //break XMLInitializer.cpp:61            // 所以,进入到initializeDatatypeValidatorFactory()单步跟踪,使用s,不要用n

    break IconvTransService.cpp:432        //找到了故障点(在这一行的)。
    break IconvTransService.cpp:460        //估计是内存分配问题,比如 溢出

    break DataBaseHelper.cpp:91
    break bOSXMLHelper.cpp:64
    break bOSFileSystem.cpp:191
    break bOSXMLHelper.cpp:116
    break AbstractDOMParser.cpp:537

    set debug remote 1
    set args TestNotePad

    c
    s
    n
    r

    info break
    delete  breakpoint-number
    backtrace

    monitor exit            //terminate gdbserver

    -------------------------------------调试问题1-----------------------------------调试到此处,停止,并且 手机重启

    (gdb) bt
    #0  xercesc_3_1::RangeToken::doCreateMap (this=0x5bece8) at xercesc/util/regx/RangeToken.cpp:852
    #1  0x00327af4 in xercesc_3_1::RangeToken::createMap (this=0x5bece8) at ./xercesc/util/regx/RangeToken.hpp:130
    #2  0x00331f84 in xercesc_3_1::XMLRangeFactory::buildRanges (this=0x5bd338, rangeTokMap=0x5ba2c8) at xercesc/util/regx/XMLRangeFactory.cpp:113
    #3  0x0031f4c4 in xercesc_3_1::RangeTokenMap::buildTokenRanges (this=0x5ba2c8) at xercesc/util/regx/RangeTokenMap.cpp:247
    #4  0x0031e8d8 in xercesc_3_1::XMLInitializer::initializeRangeTokenMap () at xercesc/util/regx/RangeTokenMap.cpp:49

    #5  0x00219aac in xercesc_3_1::XMLInitializer::initializeStaticData () at xercesc/util/XMLInitializer.cpp:51

    #6  0x0020ddac in xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 <xercesc_3_1::XMLUni::fgXercescDefaultLocale> "en_US", nlsHome=0x0,
        panicHandler=0x0, memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:307
    #7  0x001534ac in bOS::XML::XMLHelper::initialize () at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp:40
    #8  0x0000ec88 in InitSessionWithParams (acConfigFile=0x5b64b8 "/data/data/criteria/database/Criteria.xml", response=0x5b3b20)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPI.cpp:72
    #9  0x0000e948 in InitSession (response=0x5b3b20) at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPI.cpp:63
    #10 0x0000b34c in main (argc=2, argv=0xbeb2fa34)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:63


    break XMLInitializer.cpp:61        // 所以,进入到initializeDatatypeValidatorFactory()单步跟踪,使用s,不要用n

    #2  0x002aaf1c in xercesc_3_1::DatatypeValidatorFactory::expandRegistryToFullSchemaSet (this=0x5e3870)
        at xercesc/validators/datatype/DatatypeValidatorFactory.cpp:180
    #3  0x002aaca8 in xercesc_3_1::XMLInitializer::initializeDatatypeValidatorFactory () at xercesc/validators/datatype/DatatypeValidatorFactory.cpp:135

    break DatatypeValidatorFactory.cpp:180
    break DatatypeValidatorFactory.cpp:281
    break DatatypeValidatorFactory.cpp:315        // 到此处,手机死机
    break DatatypeValidatorFactory.cpp:311        // 所以,单步跟踪
    break DatatypeValidatorFactory.hpp:250        // 到此处,手机死机
    break DatatypeValidatorFactory.hpp:246        // 所以,单步跟踪

    #0  xercesc_3_1::RefHashTableOfEnumerator<xercesc_3_1::KVStringPair, xercesc_3_1::StringHasher>::~RefHashTableOfEnumerator (this=0xbed963e4,
        __in_chrg=<optimized out>) at ./xercesc/util/RefHashTableOf.c:554
    #1  0x003989d4 in xercesc_3_1::AbstractStringValidator::assignFacet (this=0x5e4a30, manager=0x5b6c98)
        at xercesc/validators/datatype/AbstractStringValidator.cpp:221
    #3  0x002bcaa0 in xercesc_3_1::StringDatatypeValidator::StringDatatypeValidator (this=0x5e4a30, baseValidator=0x5e3928, facets=0x5e4988, enums=0x0,
        finalSet=0, manager=0x5b6c98) at xercesc/validators/datatype/StringDatatypeValidator.cpp:50

    break AbstractStringValidator.cpp:221        // 所以,单步跟踪
    break StringDatatypeValidator.cpp:50

    #0  xercesc_3_1::StringDatatypeValidator::StringDatatypeValidator (this=0x5e4a30, baseValidator=0x5e3928, facets=0x5e4988, enums=0x0, finalSet=0,
        manager=0x5b6c98) at xercesc/validators/datatype/StringDatatypeValidator.cpp:51
    #1  0x002bcbbc in xercesc_3_1::StringDatatypeValidator::newInstance (this=0x5e3928, facets=0x5e4988, enums=0x0, finalSet=0, manager=0x5b6c98)
        at xercesc/validators/datatype/StringDatatypeValidator.cpp:64
    #2  0x002add30 in xercesc_3_1::DatatypeValidatorFactory::createDatatypeValidator (this=0x5e3870,
        typeName=0x4da7b4 <xercesc_3_1::SchemaSymbols::fgDT_NORMALIZEDSTRING>, baseValidator=0x5e3928, facets=0x5e4988, enums=0x0,
        isDerivedByList=false, finalSet=0, isUserDefined=false, userManager=0x5b6c98) at xercesc/validators/datatype/DatatypeValidatorFactory.cpp:678


    break DatatypeValidatorFactory.cpp:678

    Breakpoint 2, xercesc_3_1::DatatypeValidatorFactory::expandRegistryToFullSchemaSet (this=0x5e3870)
        at xercesc/validators/datatype/DatatypeValidatorFactory.cpp:312
    312                                getDatatypeValidator(XMLUni::fgNmTokenString), facets, 0, true, 0, false);

    (gdb) break DatatypeValidatorFactory.cpp:312
    (gdb) s
    (gdb) n
    (gdb)

        manager=0x5b6c98) at xercesc/validators/datatype/ListDatatypeValidator.cpp:58
    58        if (!baseValidator)

    (gdb) break ListDatatypeValidator.cpp:58
    (gdb) break ListDatatypeValidator.cpp:61
    (gdb) s
    (gdb) n

    (gdb) break AbstractStringValidator.cpp:152
    (gdb) s

    xercesc_3_1::XMLString::parseInt (toConvert=0x5e52c0, manager=0x5b6c98) at xercesc/util/XMLString.cpp:1449
    1449        XMLSize_t trimmedStrLen = XMLString::stringLen(trimmedStr);

    xercesc_3_1::IconvLCPTranscoder::transcode (this=0x5b7d20, toTranscode=0x5e52d0, manager=0x5b6c98)
        at xercesc/util/Transcoders/Iconv/IconvTransService.cpp:432
    432        while (toTranscode[srcCursor] || src)

    -----------------------找到了故障点
    (gdb) break IconvTransService.cpp:432            //找到了故障点。
    问题的解决,见 http://blog.chinaunix.net/uid-14735472-id-5211751.html

    -------------------------------------调试问题2-----------------------------------接着调试,调试到此处,出现如下问题 (段错误)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/DataBaseHelper.cpp:236
    236        CM_TRACE_CODEPATH("Process [" << acWorkflowName << "] retrieved. [" << workflow->getProcessId() << "]")

    Program terminated with signal SIGSEGV, Segmentation fault.
    The program no longer exists.
    (gdb)

    是因为Connection Nr[0]
    具体错误(在Executor-7033-20150407-163826.trace文件中)
    10:39:39.550-1073824092-   DataBaseHelper::open-INFO-DataBaseHelper.cpp[106]-Connection Nr[0]
     应该为
    16:38:26.424--134334400-   DataBaseHelper::open-INFO-DataBaseHelper.cpp[106]-Connection Nr[1]

    0:45:44.772--134334400-   DataBaseHelper::open-INFO-DataBaseHelper.cpp[106]-Connection Nr[1]
    20:45:44.772--134334400-   DataBaseHelper::open-INFO-DataBaseHelper.cpp[171]-Analysing FileSsystem Connection

    因为[106]出了问题,所以[171]没有执行,即,[111]行的 for 循环的 循环体 没有执行。

    下面调试,找问题
    (gdb) break DataBaseHelper.cpp:236
    (gdb) break DataBaseHelper.cpp:109

    --------------使用如下断点找问题
    break DataBaseHelper.cpp:102
    break bOSXMLFile.cpp:52
    break bOSCollection.cpp:37
    break bOSCollection.cpp:44
    break bOSXMLFile.cpp:59
    break DataBaseHelper.cpp:104

    break bOSXMLObject.cpp:73        //初始化 vConnections 的 地方

    break bOSXMLObject.cpp:89        //初始化 vConnections 的 地方,是虚函数,因此,执行时 定位 实际函数
    //     at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/DataBase.cpp:27

    -----------------------找到了故障点    DataBase.cpp:27
        if ( strcmp(node->getName(),XMLConnections::MAIN_NODE.c_str()) == 0 )
    ----------函数strcmp的 两个 参数 不同:"C" 和 "Connections"
      _M_data = 0x5f6510 "C"
      _M_data = 0x5813f8 <DataManager::Panorama::DataBase::XMLConnections::MAIN_NODE> "Connections"}
    ----------下面查找,第一个参数 为什么 是"C"
    break bOSXMLNode.cpp:223                //void XMLNode::setName( const char* acName )
    break setName

    break bOSXMLHelper.cpp:157
    break bOSXMLHelper.cpp:170
    break XMLString.cpp:600
    break IconvTransService.cpp:451

    先设置断点
    break bOSXMLHelper.cpp:170
    执行后,再设置断点
    break IconvTransService.cpp:529
    break IconvTransService.cpp:569

    //终于找到故障点: 文件 IconvTransService.cpp:451
            size_t len = ::wcsrtombs(resultString + dstCursor, &src, resultSize - dstCursor, &st);
    //Android中,wcsrtombs 有问题,所以 替换之
    //修改如下文件:
    /opt/cBPM-android/xerces-c-3.1.2/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp


    bt

    一个原因:在解析Criteria.xml文件时,只读取了 标签的 第一个字母。

    (gdb) bt

    #0  xercesc_3_1::IconvLCPTranscoder::transcode (this=0x5b7d20, toTranscode=0x5f7c5c, manager=0x5b6c98)
        at xercesc/util/Transcoders/Iconv/IconvTransService.cpp:484

    #1  0x0021b190 in xercesc_3_1::XMLString::transcode (toTranscode=0x5f7c5c, manager=0x5b6c98) at xercesc/util/XMLString.cpp:600

    #2  0x0015401c in bOS::XML::XMLHelper::parse (domNode=0x5f7c20)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp:170

    #3  0x00153c10 in bOS::XML::XMLHelper::parse (
        acXML=0x5eff00 "<DataBaseManager>  <Connections>    <!--    <MySQL Type="Primary" Id="1">      <PoolManager Min="1" Max="1" Retry="0" Delay="100" />", ' ' <repeats 12 times>, "<Host>127.0.0.1</Host>      <Port></Port>      <User>cri"...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp:157

    --------------
    /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/DataBaseHelper.cpp
        line-106
        CM_TRACE_INFO("Connection Nr[" << uiSize << "]")

    DataManager::Panorama::DataBase::DataBase::init (this=0xbecf63c8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/DataBase.cpp:17
    17        vConnections.init();

    DataManager::Panorama::DataBase::Connections::init (this=0xbecf63e8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/Connections.cpp:26
    26        XMLObjectSet::init();

    bOS::XML::Data::XMLObjectSet::init (this=0xbecf63e8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/Data/bOSXMLObjectSet.cpp:38
    38        this->removeAll();

    bOS::Collections::Collection::removeAll (this=0xbecf63ec)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/Collections/bOSCollection.cpp:151
    151        Mutex::Lock locker(mtxEntries);

    bOS::Core::SmartLocker<bOS::Core::Mutex>::SmartLocker (this=0xbecf6314, lock=...) at /opt/cBPM-android/criteria-lin/include/bOS/bOSSmartLocker.h:19
    19                    SmartLocker( T& lock ) : m_Lock(lock), m_bLocked(false)

    bOS::Core::Mutex::lock (this=0xbecf63fc) at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/Core/bOSMutex.cpp:43

    -------------------------------------调试问题3-----------------------------------调试到此处,停止,段错误

    Sending packet: $vCont;C0b:p1449.1449;c:p1449.-1#3c...Packet received: Xb;process:1449

    Program terminated with signal SIGSEGV, Segmentation fault.
    The program no longer exists.
    -------------------------------------

    0x001561b8 in bOS::XML::Data::XMLObject::init (this=0x4, root=0x5f7568)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/Data/bOSXMLObject.cpp:62
    62        this->init();
    -------------------------------------

    (gdb) bt
    #0  0x001561b8 in bOS::XML::Data::XMLObject::init (this=0x4, root=0x5f7568)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/Data/bOSXMLObject.cpp:62
    #1  0x000e0f9c in DataManager::Panorama::DataBase::Connection::init (this=0x4, node=0x5f7568)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/Connection.cpp:34
    #2  0x0003c67c in DataManager::DataBase::DataBaseTemplate::setXMLConnection (this=0x0, _connection=0x5eb4e0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/DataBaseTemplate.cpp:58
    #3  0x00034670 in DataManager::DataBase::DataBaseHelper::open (this=0x5eb0a8, sConfigurationFile=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/DataBaseHelper.cpp:184
    #4  0x0000ed10 in InitSessionWithParams (acConfigFile=0x5b74b8 "/data/data/criteria/database/Criteria.xml", response=0x5b4b20)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPI.cpp:78
    #5  0x0000e910 in InitSession (response=0x5b4b20)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPI.cpp:63
    #6  0x0000b314 in main (argc=2, argv=0xbec3da34)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:63
    (gdb)
    -------------------------------------

    设置断点
    break bOSXMLHelper.cpp:170
    break DataBaseHelper.cpp:101
    -------------------------------------问题解决,方法如下:
    codeblocks 局部参数 设置: Criteria.WorkflowEngine
    【Settings】->【Compiler】->【GNU ARM GCC Compiler For Android】->【Compiler Settings】->【#defines】
    添加        _FILESYSTEM_

    -------------------------------------调试问题4-----------------------------------调试到此处,停止,段错误
    Criteria session Initialization.....(look at Executor trace file)
    Criteria session Initialization [OK]
    Create process instance from template    ——> /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:78

    Child terminated with signal = 0xb (SIGSEGV)

    --------------
    Criteria session Initialization.....(look at Executor trace file)
    Criteria session Initialization [OK]
    Create process instance from template

    Child terminated with signal = 0xb (SIGSEGV)

    --------------查看日志文件Executor-*.trace,找原因
    shell@mb526:/data/data/criteria $ pwd                                                                                                 
    /data/data/criteria
    shell@mb526:/data/data/criteria $ less Executor-5331-20151014-092322.trace

    09:23:22.381-1073824092-    FileSystemConnection::init-CODEBLOCK-FileSystemConnection.cpp-OUT[17ms]
    09:23:22.382-1073824092-    FileSystemDataBase::open-INFO-FileSystemDataBase.cpp[53]-Reading Role File [/data/data/criteria/database/Criteria.Roles.xml]

    --------------设置断点
    break FileSystemDataBase.cpp:53
    break BaseWorkflowEvent.cpp:22
    break Workflow.cpp:184
    break Workflow.cpp:373

    InitSessionWithParams (acConfigFile=0x5c7ed0 "/data/data/criteria/database/Criteria.xml", response=0x5c2e68)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPI.cpp:80
    80            CM_TRACE_INFO("Instancing Engine")

    WorkflowEngine::Criteria::Core::Engine::instance ()
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:24
    24    {

    (main.cpp:95)——>
    startProcessInSynchWay (acProcessID=0x605290 "2015-1014-0953-07739-991735505", response=0x5c2e68)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPIProcess.cpp:365
    365    {

    WorkflowEngine::Criteria::Core::Engine::instance ()
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:24
    24    {

    (gdb) bt
    #0  0xe50b0008 in ?? ()
    #1  0x001059f4 in WorkflowEngine::Criteria::Event::WorkflowEvent::BaseWorkflowEvent::getProcessID (this=0xbee8e184)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/BaseWorkflowEvent.cpp:22
    #2  0x000a3e68 in WorkflowEngine::Criteria::Event::Listener::WorkflowListener::eventAction (this=0x61abc0, event=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/WorkflowListener.cpp:62
    #3  0x0009e074 in WorkflowEngine::Criteria::Event::EventMaker::throwEvent (this=0x60baf4, evt=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/EventMaker.cpp:36
    #4  0x0008d6b0 in WorkflowEngine::Criteria::Core::Workflow::starting (this=0x60bab0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:417
    #5  0x00102a9c in WorkflowEngine::Criteria::Core::IWorkflow::start (this=0x60bab0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/IWorkflow.cpp:79
    #6  0x00098bb4 in WorkflowEngine::Criteria::Core::WorkFlowThread::run (this=0x6188e0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/WorkFlowThread.cpp:15
    #7  0x000964e0 in WorkflowEngine::Criteria::Core::WorkflowManager::executeJob (this=0x605e40, pWF=0x60bab0, bDetach=false)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/WorkflowManager.cpp:155
    #8  0x00087ea4 in WorkflowEngine::Criteria::Core::Engine::execute (this=0x61abb8,
        processInstanceID=0x605290 "2015-1014-0953-07739-991735505", bRestart=false, acStatus=0x0, bSynchWay=true)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:182
    #9  0x000879bc in WorkflowEngine::Criteria::Core::Engine::startWorkFlowInSynchWay (this=0x61abb8,
        processID=0x605290 "2015-1014-0953-07739-991735505")
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:96
    #10 0x0001807c in startProcessInSynchWay (acProcessID=0x605290 "2015-1014-0953-07739-991735505", response=0x5c2e68)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPIProcess.cpp:371
    #11 0x0000b4cc in main (argc=2, argv=0xbee8ea44)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:95
    (gdb)

    --------------解决方法如下
    /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/database/processTemplate/TestNotePad.xml
    修改内容如下:
                        <Script Type="API_SYNCH" DataType="BOOLEAN">^?NoteResult?@touch@%FileName1%^</Script>

    注意:所有*.xml文件,行尾符号是 unix/linux, 不是windows。

    基本成功,达到了 在 CentOS 7 上运行的效果。

    日志文件的最后以行:
    11:28:34.051-1073824092-        eventAction-CODEPATH-WorkflowListener.cpp[67]-Event Received:[EndWorkflowEvent]

    --------------至此,基本成功
    shell@mb526:/data/data/criteria $ ll notepad.txt                                                                                      
    -rw-rw-rw- shell    shell    0 2015-10-14 11:48 notepad.txt        //这个文件是流程在运行期间通过touch命令创建的
    shell@mb526:/data/data/criteria $ pwd
    /data/data/criteria
    shell@mb526:/data/data/criteria $

    --------------

    break WorkflowListener.cpp:67

    最后停在WorkflowListener.cpp:85
    WorkflowEngine::Criteria::Event::Listener::WorkflowListener::eventAction (this=0x61abd0, event=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/WorkflowListener.cpp:85
    85        CM_TRACE_CODEPATH( "Sending Message. ProcessID[" << processID << "] Status[" << sEvent << "]")
    (gdb) p processID
    $1 = 0x0
    (gdb)

    --------------再接再厉(在CentOS 7没有解决这个问题,现在来解决)
    -------------------------------------调试问题5-----------------------------------process指向错误地址

    Program received signal SIGSEGV, Segmentation fault.
    (gdb) s
    Cannot find bounds of current function
    (gdb) c
    Continuing.
    Program terminated with signal SIGSEGV, Segmentation fault.
    The program no longer exists.
    (gdb)

    --------------设置断点
    break WorkflowListener.cpp:67
    s
    break bOSProcess.cpp:92
    ------
    break Workflow.cpp:86
    break Workflow.cpp:106
    break Workflow.cpp:139
    break Workflow.cpp:154
    ------
    break Workflow.cpp:106
    (gdb) p process
    $3 = (DataManager::Panorama::WorkflowProcesses::WorkflowProcess *) 0x5fe9f0
    (gdb) p processID
    $4 = 0x605e40 "2015-1014-1745-23179-1108168521"
    ------
    break bOSProcess.cpp:20
    break bOSProcess.cpp:28
    break bOSProcess.cpp:47
    break bOSProcess.cpp:147
    break bOSProcess.cpp:182
    ------
    break bOSProcess.cpp:28
    (gdb) p m_ProcessID
    $5 = 4222
    break BaseWorkflowEvent.cpp:22        //return _WF->getProcess()->getProcessId();
                                    //_WF->getProcess()返回process(Workflow.cpp:504),
                                    //但是单步进不去getProcessId()()

    ----------------------------------下面是 具体 找错方法:
    break Workflow.cpp:86
    break Workflow.cpp:106
    break Workflow.cpp:139
    break Workflow.cpp:154
    break BaseWorkflowEvent.cpp:22
    r
    s
    c
    在Workflow.cpp:106停止, 执行 n,然后
    (gdb) p process
    $19 = (DataManager::Panorama::WorkflowProcesses::WorkflowProcess *) 0x5fe9f0
    (gdb) c
    22        return _WF->getProcess()->getProcessId();
    (gdb) p _WF        //这个值正确,因为能够调用getProcess()
    $9 = (WorkflowEngine::Criteria::Core::Workflow *) 0x5585d0
    (gdb) s
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:504
    504        return process;
    (gdb) p process        //这个值不正确,因为不能够调用getProcessId()
    $20 = (DataManager::Panorama::WorkflowProcesses::WorkflowProcess *) 0x558650 <typeinfo for WorkflowEngine::Criteria::Event::WorkflowEvent::RestartedWorkflowEvent>

    (gdb) set var process=0x5fe9f0            //修改变量的值
    (gdb) p process        //修改process的值后,这个值不正确,能够调用getProcessId()
    $21 = (DataManager::Panorama::WorkflowProcesses::WorkflowProcess *) 0x5fe9f0
    (gdb) s
    DataManager::Panorama::WorkflowProcesses::ProcessComponent::getProcessId (this=0x5fea28)
        at /opt/cBPM-android/criteria-lin/include/WorkflowEngine/ProcessComponent.h:29
    29                    virtual const char* getProcessId() { return processId.c_str();}
    (gdb)

    《《《《《《《《查找原因,为什么Workflow.cpp:504,得到的process是错误的值》》》》》》》

    下面很重要,是生成process的地方
        /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/DataBaseHelper.cpp:637
    具体代码在:
        /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/ProcessesHandler.cpp:119

    break DataBaseHelper.cpp:637
    break BaseWorkflowEvent.cpp:22

    -----------下面通过查找原因
    break WorkflowListener.cpp:68
    break BaseWorkflowEvent.cpp:22
    break Workflow.cpp:504

    break Workflow.cpp:106            //process值0x5fe9f0,process地址0x5c7f44
    break ProcessesHandler.cpp:119        //process值0x5fe9f0,process地址0xbec73260,指针作为参数,正常。
    break Workflow.cpp:504            //process值0x558650,process地址0x558644(5604932)---> 同在Workflow.cpp,why不一样?
                                    //可能原因,是 指向了错误的 Workflow 对象
                                    //break Workflow.cpp:68 75 91 132
    break DataBaseHelper.cpp:643        //process值0x5fe9f0,process地址0xbed0541c,next is 0xbe90a41c

    (gdb) p/x *0x5c7f44
    $19 = 0x5fe9f0
    (gdb) p/x *0x558644
    $20 = 0x558650
    (gdb)
    (gdb) display/ 0x5c7f44            //可以设置一些自动显示的变量,当程序停住时,或是在你单步跟踪时,这些变量会自动显示。
    (gdb) display/ 0x558644

    break Workflow.cpp:68
    break Workflow.cpp:75
    break Workflow.cpp:91
    break Workflow.cpp:132

    执行顺序:
    -------> 91
    (gdb) p process
    $25 = (DataManager::Panorama::WorkflowProcesses::WorkflowProcess *) 0x5fe9f0
    (gdb) p &process
    $26 = (DataManager::Panorama::WorkflowProcesses::WorkflowProcess **) 0x5c7f44
    (gdb)


    break main.cpp:59
    break main.cpp:78
    break main.cpp:88
    break main.cpp:95
    break main.cpp:102
    break main.cpp:137
    break main.cpp:143
    break main.cpp:155


    ----------------
    (gdb) break Workflow.cpp:202
    (gdb) c
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:202
    202            this->throwEvent( StartedWorkflowEvent(this) );
    (gdb) p this
    $10 = (WorkflowEngine::Criteria::Core::Workflow * const) 0x5c7ed0

        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:404
    404                        throwEvent ( EndWorkflowEvent ( this ) );
    (gdb) p this
    $11 = (WorkflowEngine::Criteria::Core::Workflow * const) 0x5c7ed0


    break BaseWorkflowEvent.cpp:22
    Breakpoint 14, WorkflowEngine::Criteria::Event::WorkflowEvent::BaseWorkflowEvent::getProcessID (this=0xbead30f8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/BaseWorkflowEvent.cpp:22
    22        return _WF->getProcess()->getProcessId();
    (gdb) p _WF
    $18 = (WorkflowEngine::Criteria::Core::Workflow *) 0x5585d0 <vtable for WorkflowEngine::Criteria::Event::WorkflowEvent::EndWorkflowEvent+8>
    (gdb) set var _WF=0x5c7ed0
    (gdb) p _WF->getProcess()
    $34 = (DataManager::Panorama::WorkflowProcesses::WorkflowProcess *) 0x5fe9f0

    ----------------从上面分析,进一步发现了错误点,即:BaseWorkflowEvent.cpp:22的 _WF 错误

    break Workflow.cpp:197
    break Workflow.cpp:202
    break Workflow.cpp:404
    break Workflow.cpp:417
    break Workflow.cpp:382

    break WorkflowListener.cpp:50
    break WorkflowListener.cpp:56
    break WorkflowListener.cpp:62
    break WorkflowListener.cpp:68
    break WorkflowListener.cpp:74

    执行顺序:
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:202
    202            this->throwEvent( StartedWorkflowEvent(this) );
    (gdb) p this
    $35 = (WorkflowEngine::Criteria::Core::Workflow * const) 0x5c7ed0

        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:404
    404                        throwEvent ( EndWorkflowEvent ( this ) );
    (gdb) p this
    $36 = (WorkflowEngine::Criteria::Core::Workflow * const) 0x5c7ed0

        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/WorkflowListener.cpp:68
    68            processID = ((EndWorkflowEvent*)evt)->getProcessID();
    (gdb) p evt
    $37 = (WorkflowEngine::Criteria::Event::BaseEvent *) 0xbec6c0f8

    ----------------从上面分析,进一步发现了错误点,即:WorkflowListener.cpp:68的 evt 错误,然后,bt,追踪精确故障点

    (gdb) bt
    #0  WorkflowEngine::Criteria::Event::Listener::WorkflowListener::eventAction (this=0x61abd0, event=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/WorkflowListener.cpp:68
    #1  0x0009e074 in WorkflowEngine::Criteria::Event::EventMaker::throwEvent (this=0x5c7f14, evt=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/EventMaker.cpp:36
    #2  0x0008d59c in WorkflowEngine::Criteria::Core::Workflow::starting (this=0x5c7ed0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:404
    #3  0x00102acc in WorkflowEngine::Criteria::Core::IWorkflow::start (this=0x5c7ed0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/IWorkflow.cpp:79
    #4  0x00098bb4 in WorkflowEngine::Criteria::Core::WorkFlowThread::run (this=0x60c648)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/WorkFlowThread.cpp:15
    #5  0x000964e0 in WorkflowEngine::Criteria::Core::WorkflowManager::executeJob (this=0x605ca0, pWF=0x5c7ed0, bDetach=false)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/WorkflowManager.cpp:155
    #6  0x00087ea4 in WorkflowEngine::Criteria::Core::Engine::execute (this=0x61abc8,
        processInstanceID=0x605e40 "2015-1015-2253-59275-1312213739", bRestart=false, acStatus=0x0, bSynchWay=true)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:182
    #7  0x000879bc in WorkflowEngine::Criteria::Core::Engine::startWorkFlowInSynchWay (this=0x61abc8,
        processID=0x605e40 "2015-1015-2253-59275-1312213739")
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:96
    #8  0x0001807c in startProcessInSynchWay (acProcessID=0x605e40 "2015-1015-2253-59275-1312213739", response=0x5c2e68)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPIProcess.cpp:371
    #9  0x0000b4cc in main (argc=2, argv=0xbec6ca44)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:95
    (gdb)
    (gdb) p evt
    $1 = (WorkflowEngine::Criteria::Event::BaseEvent *) 0xbe8020f8
    (gdb) p event
    _M_data = 0x60ec18
    (gdb) f 1
    (gdb) p evt
    _M_data = 0x60ec18
    (gdb) f 2
    (gdb) p this
    $4 = (WorkflowEngine::Criteria::Core::Workflow * const) 0x5c7ed0
    (gdb)
    ----------------从上面分析,找到了问题的解决方法,如下:
    [root@localhost criteria-lin]# pwd
    /opt/cBPM-android/criteria-lin

    gedit /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp
        将 *WorkflowEvent(this)  替换为  (*WorkflowEvent*)(this)

    [root@localhost criteria-lin]# grep 'BaseEvent&' -R .|cut -d: -f1|uniq|grep -v 'h~'|grep -v 'cpp~'
    ./src/Criteria/Criteria.WorkflowEngine/events/WorkflowListener.cpp
    ./src/Criteria/Criteria.WorkflowEngine/events/EventMaker.cpp
    ./include/WorkflowEngine/EventListener.h
    ./include/WorkflowEngine/EventMaker.h
    ./include/WorkflowEngine/WorkflowListener.h

    将上面搜索到的文件中,将 BaseEvent& 替换为 BaseEvent*

    ----------------至此,经过一个星期左右的时间,成功将PC Linux版 cBPM 移植到Android(ARM)





    ----------------
    [root@localhost criteria-lin]# grep "process =" -R .|cut -d: -f1|uniq|grep bin

    break WAPIProcess.cpp:36
    break WAPIProcess.cpp:63
    break WAPIProcess.cpp:91
    break WAPIProcess.cpp:118
    break WAPIProcess.cpp:194
    break WAPIProcess.cpp:229
    break WAPIProcess.cpp:550
    break Engine.cpp:330
    break BaseAction.cpp:37
    break BaseProcessEvent.cpp:10
    break BaseProcessEvent.cpp:17
    break WorkflowReport.cpp:18
    break DataBaseTemplate.cpp:204
    break ProcessActionAttach.cpp:69
    break ProcessesHandler.h:26


    -------------->没有设置断点时的 执行 堆栈
    (gdb)
    #0  0xe50b0008 in ?? ()
    #1  0x00105a24 in WorkflowEngine::Criteria::Event::WorkflowEvent::BaseWorkflowEvent::getProcessID (this=0xbed7e0f8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/BaseWorkflowEvent.cpp:22
    #2  0x000a3f64 in WorkflowEngine::Criteria::Event::Listener::WorkflowListener::eventAction (this=0x61abd0, event=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/WorkflowListener.cpp:68
    #3  0x0009e074 in WorkflowEngine::Criteria::Event::EventMaker::throwEvent (this=0x5c7f14, evt=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/EventMaker.cpp:36
    #4  0x0008d59c in WorkflowEngine::Criteria::Core::Workflow::starting (this=0x5c7ed0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:404
    #5  0x00102acc in WorkflowEngine::Criteria::Core::IWorkflow::start (this=0x5c7ed0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/IWorkflow.cpp:79
    #6  0x00098bb4 in WorkflowEngine::Criteria::Core::WorkFlowThread::run (this=0x60c648)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/WorkFlowThread.cpp:15
    #7  0x000964e0 in WorkflowEngine::Criteria::Core::WorkflowManager::executeJob (this=0x605ca0, pWF=0x5c7ed0, bDetach=false)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/WorkflowManager.cpp:155
    #8  0x00087ea4 in WorkflowEngine::Criteria::Core::Engine::execute (this=0x61abc8,
        processInstanceID=0x605e40 "2015-1015-2211-08205-1671411348", bRestart=false, acStatus=0x0, bSynchWay=true)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:182
    #9  0x000879bc in WorkflowEngine::Criteria::Core::Engine::startWorkFlowInSynchWay (this=0x61abc8,
        processID=0x605e40 "2015-1015-2211-08205-1671411348")
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:96
    #10 0x0001807c in startProcessInSynchWay (acProcessID=0x605e40 "2015-1015-2211-08205-1671411348", response=0x5c2e68)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPIProcess.cpp:371
    #11 0x0000b4cc in main (argc=2, argv=0xbed7ea44)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:95
    (gdb)

    ------
    Breakpoint 9, WorkflowEngine::Criteria::Event::WorkflowEvent::BaseWorkflowEvent::getProcessID (this=0xbe9d40e8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/BaseWorkflowEvent.cpp:22
    22        return _WF->getProcess()->getProcessId();
    ------
    break ProcessComponent.h:24
    s
    (gdb) bt
    #0  DataManager::Panorama::WorkflowProcesses::ProcessComponent::getProcessId (this=0x5ffaa8)
        at /opt/cBPM-android/criteria-lin/include/WorkflowEngine/ProcessComponent.h:29
    #1  0x00022390 in DataManager::Panorama::WorkflowProcesses::Activity::equalTo (this=0x5fedf0, entry=0x5ffa8c)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/Activity.cpp:421
    #2  0x00145bdc in bOS::Collections::Collection::add (this=0xbeda96f0, entry2Add=0x5ffa8c)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/Collections/bOSCollection.cpp:31
    #3  0x0001c2bc in DataManager::Panorama::WorkflowProcesses::Activities::parse (this=0xbeda96ec, node=0x619fd8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/Activities.cpp:44
    #4  0x001610c4 in bOS::XML::Data::XMLObject::init (this=0xbeda96ec, root=0x602398)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/Data/bOSXMLObject.cpp:89
    #5  0x00161768 in bOS::XML::Data::XMLObjectSet::init (this=0xbeda96ec, node=0x602398)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/Data/bOSXMLObjectSet.cpp:43
    #6  0x0001c1c0 in DataManager::Panorama::WorkflowProcesses::Activities::init (this=0xbeda96ec, node=0x602398)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/Activities.cpp:31
    #7  0x0007cec0 in DataManager::Panorama::WorkflowProcesses::WorkflowProcess::parse (this=0xbeda95d8, node=0x602398)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/WorkflowProcess.cpp:93
    #8  0x001610c4 in bOS::XML::Data::XMLObject::init (this=0xbeda95d8, root=0x605048)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/Data/bOSXMLObject.cpp:89
    #9  0x00163740 in bOS::XML::Data::XMLFile::init (this=0xbeda95d8, node=0x605048)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/Data/FileSystem/bOSXMLFile.cpp:39
    #10 0x0007cad8 in DataManager::Panorama::WorkflowProcesses::WorkflowProcess::init (this=0xbeda95d8, node=0x605048)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/WorkflowProcess.cpp:50
    #11 0x00034e18 in DataManager::DataBase::DataBaseHelper::createProcess (this=0x5fbac0, acWorkflowName=0xbeda99c0 "TestNotePad", process=..., b2Prepared=true)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/DataBase/DataBaseHelper.cpp:240
    #12 0x000179ac in createWorkflowProcess (acWorkflowName=0xbeda99c0 "TestNotePad", acProcessId=0x605e40 "210R`", response=0x5c2e68)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPIProcess.cpp:332
    #13 0x0000b498 in main (argc=2, argv=0xbeda9a34)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:88
    (gdb)




    --------------
    0x00105a20 in WorkflowEngine::Criteria::Event::WorkflowEvent::BaseWorkflowEvent::getProcessID (this=0xbee840e8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/BaseWorkflowEvent.cpp:22
    22        return _WF->getProcess()->getProcessId();
    Could not insert single-step breakpoint at 0xe50b0008
    --------------
    break BaseWorkflowEvent.cpp:22
    s
    (gdb) bt
    #0  WorkflowEngine::Criteria::Core::Workflow::getProcess (
        this=0x5585d0 <vtable for WorkflowEngine::Criteria::Event::WorkflowEvent::EndWorkflowEvent+8>)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:504
    #1  0x00105a08 in WorkflowEngine::Criteria::Event::WorkflowEvent::BaseWorkflowEvent::getProcessID (this=0xbee840e8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/BaseWorkflowEvent.cpp:22
    #2  0x000a3f64 in WorkflowEngine::Criteria::Event::Listener::WorkflowListener::eventAction (this=0x61abd0, event=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/WorkflowListener.cpp:68
    #3  0x0009e074 in WorkflowEngine::Criteria::Event::EventMaker::throwEvent (this=0x5c7f14, evt=...)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/EventMaker.cpp:36
    #4  0x0008d59c in WorkflowEngine::Criteria::Core::Workflow::starting (this=0x5c7ed0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Workflow.cpp:404
    #5  0x00102acc in WorkflowEngine::Criteria::Core::IWorkflow::start (this=0x5c7ed0)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/IWorkflow.cpp:79
    #6  0x00098bb4 in WorkflowEngine::Criteria::Core::WorkFlowThread::run (this=0x603be8)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/WorkFlowThread.cpp:15
    #7  0x000964e0 in WorkflowEngine::Criteria::Core::WorkflowManager::executeJob (this=0x605ca0, pWF=0x5c7ed0, bDetach=false)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/WorkflowManager.cpp:155
    #8  0x00087ea4 in WorkflowEngine::Criteria::Core::Engine::execute (this=0x61abc8,
        processInstanceID=0x605e40 "2015-1014-1640-54357-820121757", bRestart=false, acStatus=0x0, bSynchWay=true)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:182
    #9  0x000879bc in WorkflowEngine::Criteria::Core::Engine::startWorkFlowInSynchWay (this=0x61abc8,
        processID=0x605e40 "2015-1014-1640-54357-820121757")
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/engine/Engine.cpp:96
    #10 0x0001807c in startProcessInSynchWay (acProcessID=0x605e40 "2015-1014-1640-54357-820121757", response=0x5c2e68)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPIProcess.cpp:371
    #11 0x0000b4cc in main (argc=2, argv=0xbee84a34)
        at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:95
    (gdb)




    --------------手机
    shell@mb526:/ $
    getprop |grep ip
    [dhcp.wlan0.ipaddress]: [192.168.0.101]

    export WF_HOME=/data/data/criteria; export CRITERIA_HOME=/data/data/criteria
    cd /data/data/criteria
    ./gdbserver 192.168.0.100:1234 ./executer

    --------------宿主机
    # pwd
    /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor
    # export PATH=$PATH:/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/
    # arm-linux-androideabi-gdb executer
    target extended-remote 192.168.0.104:1234
    set debug remote 1
    set args TestNotePad
    c
    --------------
  • 相关阅读:
    iOS开发 当前时间 时间戳 转换
    iOS开发 下滑隐藏Tabbar
    iOS开发 浅见runloop
    iOS开发 检测版本更新
    IOS开发 二维码功能的实现
    级数
    算法-快速排序
    struts2.0中struts.xml配置文件详解【转】
    javascript原型【转】
    AOP各种的实现【转】
  • 原文地址:https://www.cnblogs.com/ztguang/p/12647077.html
Copyright © 2011-2022 走看看