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

[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---------------------手机:

root@mb526:/ $ getprop |grep ip

[dhcp.wlan0.ipaddress]: [192.168.0.101]

root@mb526:/ # export WF_HOME=/data/data/criteria; export CRITERIA_HOME=/data/data/criteria

root@mb526:/ # cd /data/data/criteria

root@mb526:/data/data/criteria # ./gdbserver 192.168.0.100:1234 ./executer    (192.168.0.100是宿主机IP)

----------------------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        //估计是内存分配问题,比如 溢出

set debug remote 1

set args TestNotePad

r

c

s

n

info break

delete  breakpoint-number

backtrace

monitor exit            //terminate gdbserver

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

(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 <: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<:kvstringpair xercesc_3_1::stringhasher>::~RefHashTableOfEnumerator (this=0xbed963e4,

__in_chrg=) 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 <: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            //找到了故障点。

(gdb) s

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

--------------------------------下面是宿主机(命令行) 执行 r  s  n   c   的过程,目的是找到 故障点,太费时间,所以 结合 backtrace 查找 故障点

Breakpoint 4, bOS::XML::XMLHelper::initialize () at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp:40

40            xercesc_3_1::XMLPlatformUtils::Initialize();

(gdb)

xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 <:xmluni::fgxercescdefaultlocale> "en_US", nlsHome=0x0, panicHandler=0x0,

memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:166

166    {

xercesc_3_1::MemoryManagerImpl::MemoryManagerImpl (this=0x5b6c98) at ./xercesc/internal/MemoryManagerImpl.hpp:48

48        MemoryManagerImpl()

xercesc_3_1::MemoryManager::MemoryManager (this=0x5b6c98) at ./xercesc/framework/MemoryManager.hpp:108

108        MemoryManager()

xercesc_3_1::MemoryManagerImpl::MemoryManagerImpl (this=0x5b6c98) at ./xercesc/internal/MemoryManagerImpl.hpp:50

50        }

xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 <:xmluni::fgxercescdefaultlocale> "en_US", nlsHome=0x0, panicHandler=0x0,

memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:208

208        if (!panicHandler)

xercesc_3_1::XMemory::operator new (size=4) at xercesc/util/XMemory.cpp:34

34    {

xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation (ptrSize=4) at ./xercesc/util/PlatformUtils.hpp:813

813        XMLSize_t current = ptrSize % alignment;

xercesc_3_1::XMemory::operator new (size=4) at xercesc/util/XMemory.cpp:41

41            );

xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:37

37    {

xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:46

46        if(memptr==NULL && size!=0)

xercesc_3_1::XMemory::operator new (size=4) at xercesc/util/XMemory.cpp:42

42        *(MemoryManager**)block = XMLPlatformUtils::fgMemoryManager;

xercesc_3_1::DefaultPanicHandler::DefaultPanicHandler (this=0x5b6cb0) at ./xercesc/util/DefaultPanicHandler.hpp:46

46        DefaultPanicHandler(){};

xercesc_3_1::XMemory::XMemory (this=0x5b6cb0) at ./xercesc/util/XMemory.hpp:132

132        }

xercesc_3_1::PanicHandler::PanicHandler (this=0x5b6cb0) at ./xercesc/util/PanicHandler.hpp:70

70        PanicHandler(){};

xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 <:xmluni::fgxercescdefaultlocale> "en_US", nlsHome=0x0, panicHandler=0x0,

memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:223

223        endianTest.ch = 1;

xercesc_3_1::XMLPlatformUtils::makeMutexMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:725

725        XMLMutexMgr* mgr = NULL;

xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:63

63        assert(manager != 0);

xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation (ptrSize=4) at ./xercesc/util/PlatformUtils.hpp:813

813        XMLSize_t current = ptrSize % alignment;

xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:68

68        void* const block = manager->allocate(headerSize + size);

xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:37

37    {

xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:46

46        if(memptr==NULL && size!=0)

xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:69

69        *(MemoryManager**)block = manager;

xercesc_3_1::PosixMutexMgr::PosixMutexMgr (this=0x5b6cc0) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:44

44    PosixMutexMgr::PosixMutexMgr()

xercesc_3_1::XMLMutexMgr::XMLMutexMgr (this=0x5b6cc0) at ./xercesc/util/XMLMutexMgr.hpp:36

36            XMLMutexMgr() {}

xercesc_3_1::XMemory::XMemory (this=0x5b6cc0) at ./xercesc/util/XMemory.hpp:132

132        }

xercesc_3_1::PosixMutexMgr::PosixMutexMgr (this=0x5b6cc0) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:46

46    }

xercesc_3_1::XMLPlatformUtils::makeMutexMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:737

737        return mgr;

xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 <:xmluni::fgxercescdefaultlocale> "en_US", nlsHome=0x0, panicHandler=0x0,

memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:249

249        fgFileMgr        = makeFileMgr(fgMemoryManager);

xercesc_3_1::XMLPlatformUtils::makeFileMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:504

504        XMLFileMgr* mgr = NULL;

xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:63

63        assert(manager != 0);

xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation (ptrSize=4) at ./xercesc/util/PlatformUtils.hpp:813

813        XMLSize_t current = ptrSize % alignment;

xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:37

37    {

xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:46

46        if(memptr==NULL && size!=0)

xercesc_3_1::XMemory::operator new (size=4) at xercesc/util/XMemory.cpp:42

42        *(MemoryManager**)block = XMLPlatformUtils::fgMemoryManager;

xercesc_3_1::DefaultPanicHandler::DefaultPanicHandler (this=0x5b6cb0) at ./xercesc/util/DefaultPanicHandler.hpp:46

46        DefaultPanicHandler(){};

xercesc_3_1::XMemory::XMemory (this=0x5b6cb0) at ./xercesc/util/XMemory.hpp:132

132        }

xercesc_3_1::PanicHandler::PanicHandler (this=0x5b6cb0) at ./xercesc/util/PanicHandler.hpp:70

70        PanicHandler(){};

xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 <:xmluni::fgxercescdefaultlocale> "en_US", nlsHome=0x0, panicHandler=0x0,

memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:223

223        endianTest.ch = 1;

xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:63

63        assert(manager != 0);

Breakpoint 1, xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation (ptrSize=4) at ./xercesc/util/PlatformUtils.hpp:813

813        XMLSize_t current = ptrSize % alignment;

xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:68

68        void* const block = manager->allocate(headerSize + size);

Breakpoint 2, xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:37

37    {

xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:46

46        if(memptr==NULL && size!=0)

xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:69

69        *(MemoryManager**)block = manager;

xercesc_3_1::PosixMutexMgr::PosixMutexMgr (this=0x5b6cc0) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:44

44    PosixMutexMgr::PosixMutexMgr()

xercesc_3_1::XMLMutexMgr::XMLMutexMgr (this=0x5b6cc0) at ./xercesc/util/XMLMutexMgr.hpp:36

36            XMLMutexMgr() {}

xercesc_3_1::XMemory::XMemory (this=0x5b6cc0) at ./xercesc/util/XMemory.hpp:132

132        }

xercesc_3_1::PosixMutexMgr::PosixMutexMgr (this=0x5b6cc0) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:46

46    }

xercesc_3_1::XMLPlatformUtils::makeMutexMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:737

737        return mgr;

xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 <:xmluni::fgxercescdefaultlocale> "en_US", nlsHome=0x0, panicHandler=0x0,

memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:249

249        fgFileMgr        = makeFileMgr(fgMemoryManager);

xercesc_3_1::XMLPlatformUtils::makeFileMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:504

504        XMLFileMgr* mgr = NULL;

...

循环 1065行

xercesc_3_1::PosixMutexWrap::PosixMutexWrap (this=0x5b6cf8) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:38

38    class PosixMutexWrap : public XMemory {

xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 <:xmluni::fgxercescdefaultlocale> "en_US", nlsHome=0x0, panicHandler=0x0,

memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:269

269        XMLInitializer::initializeTransService(); // TransService static data.

xercesc_3_1::RefHashTableOf<:enamemap xercesc_3_1::stringhasher>::put (this=0x5b6d30,

key=0x4ccf90 <:xmluni::fgxmlchencodingstring>, valueToAdopt=0x5b6f90) at ./xercesc/util/RefHashTableOf.c:412

412        if (newBucket)

key=0x4ccde0 <:xmluni::fgusasciiencodingstring>, hashVal=@0xbed324ec: 2180388) at ./xercesc/util/RefHashTableOf.c:492

492        hashVal = fHasher.getHashVal(key, fHashModulus);

key=0x4cce10 <:xmluni::fgusasciiencodingstring4>, hashVal=@0xbed324ec: 93) at ./xercesc/util/RefHashTableOf.c:495

495        RefHashTableBucketElem* curElem = fBucketList[hashVal];

xercesc_3_1::StringHasher::getHashVal (this=0x5b6d48, key=0x4cce24 <:xmluni::fgutf8encodingstring>, mod=103)

at ./xercesc/util/Hashers.hpp:47

47      }

xercesc_3_1::XMLTransService::initTransService (this=0x5b6f48) at xercesc/util/TransService.cpp:227

227        gMappings->put((void*)XMLUni::fgUSASCIIEncodingString, new ENameMapFor(XMLUni::fgUSASCIIEncodingString));

xercesc_3_1::XMemory::operator new (size=8) at xercesc/util/XMemory.cpp:41

41            );

xercesc_3_1::XMLString::hash (tohash=0x4cce04 <:xmluni::fgusasciiencodingstring3>, hashModulus=103) at ./xercesc/util/XMLString.hpp:1588

1588        if (tohash == 0 || *tohash == 0)

encodingName=0x4ccb48 <:xmluni::fgiso88591encodingstring>) at ./xercesc/util/TransENameMap.c:32

32    ENameMapFor::ENameMapFor(const XMLCh* const encodingName) :

xercesc_3_1::ENameMap::ENameMap (this=0x5b7198, encodingName=0x4ccb48 <:xmluni::fgiso88591encodingstring>)

at ./xercesc/util/TransENameMap.hpp:75

xercesc_3_1::XMLString::stringLen (src=0x4ccbbc <:xmluni::fgiso88591encodingstring7>) at ./xercesc/util/XMLString.hpp:1451

1451        if (src == 0)

encodingName=0x4ccbcc <:xmluni::fgiso88591encodingstring8>) at ./xercesc/util/TransENameMap.c:36

36    }

xercesc_3_1::RangeToken::addRange (this=0x5c2fc8, start=6155, end=6467) at xercesc/util/regx/RangeToken.cpp:335

335        fCaseIToken = 0;

Sending packet: $X98ff0,4:?\001??#27...Packet received: OK

Sending packet: $QPassSignals:e;10;14;17;1a;1b;1c;21;24;25;2c;4c;#5f...Packet received: OK

Sending packet: $vCont;c:pc6b.-1#d9...

Sending packet: $m2abd08,4#8e...Packet received: 1c00a0e3

Sending packet: $X2abd08,4:?\001??#7b...Packet received: OK

Sending packet: $vCont;c:pcdf.-1#0b...

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

--------------------------------上面是 执行 r  s  n   c   的过程,目的是找到 故障点,太费时间,所以 结合 backtrace 查找 故障点

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

/opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp

xercesc_3_1::XMLPlatformUtils::Initialize();    //程序至步于此,并且手机自动重启,说明xercesc_3_1有问题

include/bOS/xercesc/util/PlatformUtils.cpp

include/bOS/xercesc/util/XercesDefs.hpp:    #define XERCES_CPP_NAMESPACE_BEGIN namespace XERCES_CPP_NAMESPACE {

--------------------将下面两个文件中xercesc_3_1替换为xercesc_3_0

[root@localhost criteria-lin]# pwd

/opt/cBPM-android/criteria-lin

./src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp

./include/bOS/bOSXMLHelper.h

--------------------编译xercesc_3_0静态库——以下 不看,不用了

编译xerces-c (静态库)—CentOS 7— android-ndk

[root@localhost xerces-c-3.0.0]# pwd

/opt/cBPM-android/xerces-c-3.0.0

[root@localhost xerces-c-3.0.0]# make clean

export XERCES="/opt/cBPM-android/xerces-c-3.0.0/"

export NDK_ROOT="/opt/android-on-linux/android-ndk-r8e"

export SYSROOT="$NDK_ROOT/platforms/android-14/arch-arm"

export CFLAGS="--pipe --sysroot=$SYSROOT -I$NDK_ROOT/sources/cxx-stl/stlport/stlport -I$NDK_ROOT/platforms/android-14/arch-arm/usr/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include"

export CPPFLAGS="$CFLAGS"

export CXXFLAGS="$CFLAGS"

export LDFLAGS="-L$SYSROOT/usr/lib/ -L$NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -lstlport_static -lgcc -lc"

export CPATH="$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin"

export CPP="$CPATH/arm-linux-androideabi-cpp"

export CXX="$CPATH/arm-linux-androideabi-g++"

export CC="$CPATH/arm-linux-androideabi-gcc"

export LD="$CPATH/arm-linux-androideabi-ld"

export AR="$CPATH/arm-linux-androideabi-ar"

[root@localhost xerces-c-3.0.0]# ac_cv_func_iconv_open=yes ac_cv_func_iconv_close=yes ac_cv_func_mblen=yes ac_cv_func_wcstombs=yes ac_cv_func_mbstowcs=yes ac_cv_func_iconv=yes ./configure --host="arm-linux-eabi" --enable-static --disable-shared --enable-transcoder-iconv

[root@localhost xerces-c-3.0.0]# make -j5

[root@localhost xerces-c-3.0.0]# cp ./src/.libs/libxerces-c.a /opt/cBPM-android/criteria-lin/lib

至此,成功编译 xerces-c-3.0.0 静态库

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

xercesc/util/XMLAbstractDoubleFloat.cpp:431:27: error: 'struct lconv' has no member named 'decimal_point'

[root@localhost xerces-c-3.0.0]# gedit ./src/xercesc/util/XMLAbstractDoubleFloat.cpp

//    lconv* lc = localeconv();

//    char delimiter = *lc->decimal_point;

char delimiter = '.';        //把localeconv()调用给绕过去了

保存,重新编译xerces-c (静态库)

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

/usr/include/curl/curlbuild.h:1:27: fatal error: bits/wordsize.h: No such file or directory

/usr/include/curl/curlbuild.h:4:26: fatal error: curlbuild-32.h: No such file or directory

[root@localhost xerces-c-3.0.0]# find /usr/include/ -name wordsize.h

/usr/include/bits/wordsize.h

yum install libcurl-devel.i686

--------------------编译xercesc_3_0静态库——以上 不看,不用了

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

[root@localhost lib]# /opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gdb

(gdb) file executer

进行调试

(gdb) list   or l

(gdb) break func

(gdb) break 22

(gdb) info br

(gdb) continue   or c    // 这里不能用 run

(gdb) next   or n

(gdb) print or p    result

(gdb) finish        // 跳出func函数

(gdb) next

(gdb) quit

建立连接后进行gdb远程调试和gdb本地调试方法相同

阅读(922) | 评论(0) | 转发(0) |

gdbserver yum 安装_(OK) 编译cBPM—CentOS7—gdb—gdbserver—成功—调试相关推荐

  1. centos7 go yum 安装_超详细的centos7下载安装Postgresql11(yum安装)教程

    概述 新项目准备用PG数据库,实际上也是练手用的,后面用好了再做mysql到PG的迁移,今天主要记录一下centos7用yum安装Postgresql11的过程. 1.到官网查看yum支持到哪个版本的 ...

  2. linux:使用yum安装_首次使用Linux:30个安装案例

    linux:使用yum安装 Linux内核在8月25日(星期六)再大一岁.26年前,创建者和BDFL Linus Torvalds可能已经感觉到Linux只能满足一个人的需求. 但是今天我们知道,它改 ...

  3. 超详细的CentOS7中安装Git,yum安装和自己编译安装

    预备知识很长,请耐心看,对后面安装过程的理解及其对linux 的理解都很有帮助 一.预备知识 1)什么是自由软件运动? 自由软件运动致力于通过自由软件使计算机用户获得自由权利.自由软件的用户可以自主控 ...

  4. gdbserver yum 安装_linux gdb怎么安装?

    1,先下载最新版本的gdb源代码包,我使用的是gdb-7.6.tar.gz,使用tar命令进行解包(tar -xvzf gdb-7.6.tar.gz),cd进gdb-7.6/gdb目录,使用vi找到r ...

  5. 腾讯云yum安装mysql_腾讯云CentOS7.0使用yum安装mysql_MySQL

    背景: 今天才申请了腾讯云+校园计划的1元服务器,(http://www.qcloud.com/event/qcloudSchool)安装了Centos7.0,在安装mysql的时候,使用yum li ...

  6. 阿里云hph版本跟mysql安装_实体机下Centos7操作系统的安装,PHP,FTP,mariadb,Apache的安装设置,搭建网站完美实现...

    各个版本的ISO镜像文件说明: CentOS-7-x86_64-DVD-1708.iso               标准安装版(推荐) CentOS-7-x86_64-Everything-1708 ...

  7. centos7 r语言安装_【DS】Centos7服务器上安装R和Rstudio

    笔者邀请您,先思考: 1 服务器上如何安装R和RStudio? 为了增加计算力来处理和整合更多和更杂的数据集,运维同事给我们分配了服务器.服务器是用Centos7的Linux系统,为了完成数据科学任务 ...

  8. pg加密扩展的安装_为编译安装的PG安装扩展

    这个标题似乎很绕口.我的意思是如果是如果安装Postgres时,如果是自己下载源码编译安装,而make时又没有make world,就会导致的pg最终没有类似pg_stat_statements的扩展 ...

  9. yum安装与源码编译安装实际使用区别

    总结一些我实际生产使用的区别: 1.yum安装不是说不行,都行,各有千秋. 2.yum安装目录不集中,但基本遵循Linux文件夹的作用去划分文件,比如配置文件通常在/etc下. 3.yum安装说的模块 ...

最新文章

  1. Nature子刊:微生物系统的功能与功能冗余
  2. FD.io/VPP — VPP 的软件架构
  3. Ptyhon学习之元组
  4. Angular——单页面与路由的使用
  5. Python3学习笔记(六):字符串
  6. 【shell】awk的next用法
  7. ofdm原理_什么是IQ调制,了解I/Q调制的基本原理及其主要特征 - 射频技术第2部分...
  8. 区块链不适用的若干场景
  9. 元宇宙系列白皮书——未来已来:全球XR产业洞察
  10. Fiddler 抓包工具
  11. 瑞能实业IPO被终止:年营收4.47亿 曾拟募资3.76亿
  12. 自动批量删除微博取消关注删除私信脚本
  13. 玩转Jetson AGX Orin官方套件
  14. [PYTHON]python编程100例
  15. svn使用(服务器端和客户端)
  16. nginx permanent 作用
  17. 【读书笔记】20210812《海底捞你学不会》——黄铁鹰
  18. 郴州市少儿机器人编_郴州市举办中小学机器人竞赛
  19. git基础及工作原理
  20. 比较几种软件提交工具后选择了gsa auto softsubmit

热门文章

  1. 【根据网上其他没有解决】XAMPP报错Error: Apache shutdown unexpectedly
  2. pytorch nn.Conv2d
  3. Django+JWT实现Token认证
  4. vue-router(2)
  5. Azure SQL 数据库引入了新的服务级别
  6. web.py 0.3 新手指南 - 安装
  7. 18.实现标准的Dispose模式
  8. LED适用范围及寿命
  9. UA PHYS515 电磁理论II 静电场问题5 用Green函数法求解interior Dirichlet问题的例子
  10. UA MATH565C 随机微分方程V Markov Family的算子