OK) 调试cBPM—CentOS7—gdb—gdbserver—问题的解决—5—process指向错误地址

--------------再接再厉(在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
--------------

原文地址:https://www.cnblogs.com/ztguang/p/12647079.html