31. Can't debug OSX WebKit MiniBrowser with GDB - WebKit porting to Mona OS
Since Mona has a poor debug feature, we want a stable debuggable WebKit. I think the OSX WebKit MiniBrowser is suitable for this usage.
Building
% Tools/Scripts/set-webkit-configuration --debug % make -C Source/JavaScriptCore % make -C Source/JavaScriptGlue % make -C Source/ThirdParty/ANGLE % make -C Source/WebCore % make -C Source/WebKit % make -C Source/WebKit2 % make -C Tools/MiniBrowser
GDB
It doesn't break on the breakpoint. Why?
% gdb --args ./WebKitBuild/Debug/MiniBrowser.app/Contents/MacOS/MiniBrowser GNU gdb 6.3.50-20050815 (Apple version gdb-1515) (Sat Jan 15 08:33:48 UTC 2011) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries ......... done ### set Breakpoint (gdb) b /Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp:142 No source file named /Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (/Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp:142) pending. (gdb) r Starting program: /Users/taro/WebKit.OSX/WebKitBuild/Debug/MiniBrowser.app/Contents/MacOS/MiniBrowser Reading symbols for shared libraries .++++++++............................................................................................ done Breakpoint 2 at 0x102bff703: file /Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp, line 142. Breakpoint 3 at 0x102bff8bf: file /Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp, line 142. warning: Multiple breakpoints were set. Use the "delete" command to delete unwanted breakpoints. Pending breakpoint 1 - "/Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp:142" resolved Reading symbols for shared libraries . done Reading symbols for shared libraries . done Reading symbols for shared libraries . done Reading symbols for shared libraries . done Reading symbols for shared libraries . done Reading symbols for shared libraries . done Reading symbols for shared libraries . done RenderText /Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp:142 ## should be break HERE! RenderText /Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp:142 RenderText /Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp:142 RenderText /Users/taro/WebKit.OSX/Source/WebCore/rendering/RenderText.cpp:142 paint /Users/taro/WebKit.OSX/Source/WebCore/rendering/InlineFlowBox.cpp:998 paint /Users/taro/WebKit.OSX/Source/WebCore/rendering/InlineTextBox.cpp:472 paint /Users/taro/WebKit.OSX/Source/WebCore/rendering/InlineFlowBox.cpp:998 paint /Users/taro/WebKit.OSX/Source/WebCore/rendering/InlineTextBox.cpp:472 paint /Users/taro/WebKit.OSX/Source/WebCore/rendering/InlineFlowBox.cpp:998 paint /Users/taro/WebKit.OSX/Source/WebCore/rendering/InlineTextBox.cpp:472 paint /Users/taro/WebKit.OSX/Source/WebCore/rendering/InlineFlowBox.cpp:998 paint /Users/taro/WebKit.OSX/Source/WebCore/rendering/InlineTextBox.cpp:472
How to Debug
Hajime Morrita taught me how to debug. WebKit is multi processes model, so we have to attach to another process.
% WebKitBuild/Debug/MiniBrowser.app/Contents/MacOS/MiniBrowser & % pgrep -lf WebProcess.app 21697 /Users/taro/WebKit.OSX/WebKitBuild/Debug/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcess /Users/taro/WebKit.OSX/WebKitBuild/Debug/WebKit2.framework/WebKit2 -type webprocess -servicename com.apple.WebKit.WebProcess-21680-0x108647440 -localization en_US % gdb -p 21697