Qt-Webkit移植(二)

上回讲到加载其它网页崩掉的问题

这回讲解如何debug

首先获取到了崩溃的回溯内存信息,然后要获取执行QtTestBrowser的内存地址分布

ps看下QtTestBrowser的pid xxx

然后cat /proc/xxx/maps >> 1.log

72fbc000-73307000 r-xp 00000000 00:0d 690855     /qt4.8.3/lib/libQtCore.so.4.8.3
73307000-73316000 ---p 00000000 00:00 0
73316000-73323000 rw-p 0034a000 00:0d 690855     /qt4.8.3/lib/libQtCore.so.4.8.3
73323000-73433000 r-xp 00000000 00:0d 690742     /qt4.8.3/lib/libQtNetwork.so.4.8.3
73433000-73442000 ---p 00000000 00:00 0
73442000-73448000 rw-p 0010f000 00:0d 690742     /qt4.8.3/lib/libQtNetwork.so.4.8.3
73448000-73ee4000 r-xp 00000000 00:0d 690739     /qt4.8.3/lib/libQtGui.so.4.8.3
73ee4000-73ef3000 ---p 00000000 00:00 0
73ef3000-73f2f000 rw-p 00a9b000 00:0d 690739     /qt4.8.3/lib/libQtGui.so.4.8.3
73f2f000-73f30000 rw-p 00000000 00:00 0
73f30000-73ff9000 r-xp 00000000 00:0d 690731     /qt4.8.3/lib/libQtSql.so.4.8.3
73ff9000-74008000 ---p 00000000 00:00 0
74008000-7400c000 rw-p 000c8000 00:0d 690731     /qt4.8.3/lib/libQtSql.so.4.8.3
7400c000-75ddd000 r-xp 00000000 00:0d 754579     /Qt4.8.3/lib/libQtWebKit.so.4
75ddd000-75ded000 ---p 00000000 00:00 0
75ded000-760ce000 rw-p 01dd1000 00:0d 754579     /Qt4.8.3/lib/libQtWebKit.so.4
760ce000-760e3000 rw-p 00000000 00:00 0

找0x753e087c内存地址

7400c000-75ddd000 r-xp 00000000 00:0d 754579     /Qt4.8.3/lib/libQtWebKit.so.4

这个区间

然后获取偏移地址

就是用报错的地址 减去 加载库的基地址

0x753e087c - 0x7400c000 = 0x13d487c

然后用交叉工具链的addr2line去获取函数名

# mipsel-linux-addr2line -e ./libQtWebKit.so.4.8.3 -f 0x13d487c
_ZN7WebCore31NonSharedCharacterBreakIteratorD2Ev
??:0

由于是C++写的,所以找的函数都有加命名空间,而且存在重载

因而会存在部分信息看不懂,这没关系

源是WebCore::NonSharedCharacterBreakIterator

得到NonSharedCharacterBreakIterator

就这样追溯到那里面去

 

然后找到了

webcore\platform\text\string.cpp

然后对比以前成功的例子

发现在numCharactersInGraphemeClusters和numGraphemeClusters现在是

NonSharedCharacterBreakIterator it(s.characters(), s.length());

以前是

TextBreakIterator* it = wordBreakIterator(s.characters(), s.length());

那么把这些改回原来的,编译,测试

OK,加载成功

你可能感兴趣的:(Qt-Webkit移植(二))