HACKING: precisions for debugging under MacOS
* HACKING: Here.
This commit is contained in:
parent
68014e46fc
commit
f748281719
1 changed files with 32 additions and 3 deletions
35
HACKING
35
HACKING
|
|
@ -150,9 +150,9 @@ on a binary, will be confused by the script. Example:
|
||||||
The proper way to run any command on these fake binaries is via
|
The proper way to run any command on these fake binaries is via
|
||||||
libtool:
|
libtool:
|
||||||
|
|
||||||
% ../../libtool --mode=execute file ltl2tgba
|
% ../libtool --mode=execute file ltl2tgba
|
||||||
/home/adl/git/spot/bin/.libs/lt-ltl2tgba: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
|
/home/adl/git/spot/bin/.libs/lt-ltl2tgba: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
|
||||||
% ../../libtool --mode=execute gdb -q ltl2tgba
|
% ../libtool --mode=execute gdb -q ltl2tgba
|
||||||
Reading symbols from /home/adl/git/spot/bin/.libs/lt-ltl2tgba...done.
|
Reading symbols from /home/adl/git/spot/bin/.libs/lt-ltl2tgba...done.
|
||||||
(gdb) quit
|
(gdb) quit
|
||||||
|
|
||||||
|
|
@ -163,7 +163,7 @@ will be found.
|
||||||
If you are building Spot from the GIT repository, the libtool script
|
If you are building Spot from the GIT repository, the libtool script
|
||||||
generated the root of the build tree should be the same as the libtool
|
generated the root of the build tree should be the same as the libtool
|
||||||
script that is installed on your system. So you can simply run
|
script that is installed on your system. So you can simply run
|
||||||
libtool instead of ../../libtool.
|
libtool instead of ../libtool.
|
||||||
|
|
||||||
There is an undocumented feature of libtool that allows you to
|
There is an undocumented feature of libtool that allows you to
|
||||||
shorthand "libtool --mode=execute" as "libtool execute" or even
|
shorthand "libtool --mode=execute" as "libtool execute" or even
|
||||||
|
|
@ -176,6 +176,35 @@ For instance:
|
||||||
(The trailing space makes it possible to follow this command by
|
(The trailing space makes it possible to follow this command by
|
||||||
another aliased command.)
|
another aliased command.)
|
||||||
|
|
||||||
|
If you are using MacOS, the installation of GDB can be hard, even when
|
||||||
|
using packages manager like MacPorts or Homebrew. Indeed Apple promotes
|
||||||
|
lldb over gdb.
|
||||||
|
|
||||||
|
A consequence the following command lines work perfectly on
|
||||||
|
pre El Capitan (OS X 10.11) versions
|
||||||
|
|
||||||
|
% ../libtool --mode=execute lldb -- bin/ltl2tgba
|
||||||
|
(lldb) r 'F a'
|
||||||
|
|
||||||
|
Nonetheless for newer versions the same commands will (probably)
|
||||||
|
raise:
|
||||||
|
|
||||||
|
dyld: Library not loaded: /usr/local/lib/libspot.0.dylib
|
||||||
|
Referenced from: /Users/etienne/src/spot/bin/.libs/ltl2tgba
|
||||||
|
Reason: image not found
|
||||||
|
Process 11024 stopped
|
||||||
|
|
||||||
|
This is a side effect of "System Integrity Protection" introduced in El
|
||||||
|
Capitan. From this version, calling tools from /usr/bin purges environment
|
||||||
|
variables. Consequently the DYLD_LIBRARY_PATH is not exported. Two solutions
|
||||||
|
can be envisaged:
|
||||||
|
- [not-recommended] disable "System Integrity Protection"
|
||||||
|
- [recommended] use the XCode lldb, not located in /usr/bin.
|
||||||
|
|
||||||
|
Then, to use lldb on MacOs, just run the following command:
|
||||||
|
% ../libtool --mode=execute /Applications/Xcode.app/Contents/Developer/usr/bin/lldb -- bin/ltl2tgba
|
||||||
|
(lldb) r 'F a'
|
||||||
|
|
||||||
|
|
||||||
Profiling with callgrind
|
Profiling with callgrind
|
||||||
------------------------
|
------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue