Cuihaixu / lldbinit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Similar implementation of .gdbinit from fG! for lldb in python

How to install it:
cp lldbinit.py /Library/Python/2.7/site-packages
in $HOME/.lldbinit add:
command script import lldbinit

Later versions of MacOS come with lldb and Python3 which is bundled with Xcode. 
Thus to install python3 version on later versions:
cp lldbinitpy3.py ~/
in $HOME/.lldbinit add:
command script import ~/lldbinitpy3.py

If you want latest lldb, to compile it from svn we need to do:
svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb
xcodebuild -configuration Release

Commands which are implemented:
	stepo       - step over some instructions (call/movs/stos/cmps/loop)
	dd          - dump hex data at certain address (keep compatibility with .gdbinit)
		      this shoud be db command
	db          - same as dd for SoftICE enthusiasts	
	ctx/context - dump registers and assembly
	lb	    - load breakpoints from file and apply them (currently only func names are applied)	 
	lb_rva	    - load breakpoints from file and apply to main executable, only RVA in this case
		      and command will determine main program base and apply breaks	
	u	    - dump instructions at certain address (SoftICE like u command style)
	ddword	    - dump data as dword 
	dq	    - dump data as qword
	dw	    - dump data as word
	iphone	    - connect to debugserver running on iPhone 
	findmem	    - command to search memory 
		      [options]
		      -s searches for specified string
		      -u searches for specified unicode string
                      -b searches binary (eg. -b 4142434445 will find ABCDE anywhere in mem)
		      -d searches dword  (eg. -d 0x41414141)
                      -q searches qword  (eg. -d 0x4141414141414141)
		      -f loads patern from file if it's tooooo big to fit into any of specified
                         options
		      -c specify if you want to find N occurances (default is all)
	bt	    - broken... and removed, now thread/frame information is by default shown on every
                      hook-stop by lldb itself...

hook-stop can be added only when target exists, before it's not possible (maybe in later versions
of lldb it is or will be possible but...). Trick to get arround this is to create thread which will
try to add hook-stop, and will continue doing so until it's done. This could cause some raise conditions
as I don't know if this is thread safe, however in my testing (and using it) it worked quite well so
I keep using it instead of adding extra command "init" or such when target is created...

Currently registers dump are done for i386/x86_64/arm 

For supported ARM types for iPhone check here:
	source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
	PlatformDarwin::ARMGetSupportedArchitectureAtIndex  <-- maybe wrong, but you have
								idea what they support

About


Languages

Language:Python 100.0%