User Tools

Site Tools


skype5_gdb

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
skype5_gdb [2011/02/21 08:11]
ben created
— (current)
Line 1: Line 1:
-For some reason the Skype 5 for the Mac release has a minimum window height and width. ​ It's very clearly un-liked by the masses, including myself. ​ I have no idea of the legality or license breach or whatnot of running Skype in a debugger, but since there'​s no decompilation necessary to do this, I can't see the harm.  ​ 
  
- 
-**This is a very manual process.** ​ The window minimum height annoys me to such a degree that I'm willing to do this every time I start Skype (not very frequently though I use it every day).  
- 
-Major Caveats: 
-  - Skype 5 is not designed to be run this way, so the GUI suffers with smaller windows sizes. 
-  - The process is manual and needs to be run every time you use Skype, I haven'​t bothered to try to automate it though I'm sure one can 
-  - The gdb debugger must already be installed on your mac (google it) 
- 
- 
-To run Skype 5 without the minimum window size, the steps are: 
-  - Open Terminal 
-  - enter: gdb /​Applications/​Skype.app/​Contents/​MacOS/​Skype ​ 
-  - wait for the "​(gdb)"​ prompt 
-  - enter: b -[NSWindow setMinSize:​] and answer "​y"​ to any questions 
-  - enter: b -[NSWindow setContentMinSize:​] and answer "​y"​ to any questions 
-  - enter: r 
-  - when greeted with "​Breakpoint 1, 0x90a34f6d in -[NSWindow setMinSize:​] ()", enter: ret 
-  - when greeted with "Make selected stack frame return now? (y or n)" enter: y 
-  - enter: c 
-  - when greeted with "​Breakpoint 2, 0x90990fda in -[NSWindow setContentMinSize:​] ()" enter: ret 
-  - when greeted with "Make selected stack frame return now? (y or n)" enter: y 
-  - enter: c 
-  - when greeted with "​Breakpoint 1, 0x90a34f6d in -[NSWindow setMinSize:​] ()", enter: ret 
-  - when greeted with "Make selected stack frame return now? (y or n)" enter: y 
-  - enter: c 
-  - **Enjoy Skype 5 with a completely resizable window** 
- 
-Below are my original notes, they are not complete, readable, or coherent: 
-<​code>​ 
-NOTES: 
- 
- 
-r = run 
-bt = backtrace /show the stack 
-info functions setContentMinSize ​ - gets address for the set window size function, or other... 
-info functions set.*Size - get all functions that have set ... Size 
-info functions NS.*set.*MinSize 
-info frame - information about current frame in stack 
- 
-b *0x90990fc8 - set a breakpoint at a function address (from info functions) 
-x/10i 0x90990fc8 - show next 10 instructions NOTE no * in the address... 
-x/10i - show next ten instructions 
-si (step single instruction including function calls) 
-ni (step single instruction don't include function calls) 
-return (return immediately from function) 
- 
-Action: 
- 
-Find all functions that set the MinSize: info functions NSW.*set.*MinSize 
- 
-(gdb) info functions NSW.*set.*MinSize 
-All functions matching regular expression "​NSW.*set.*MinSize":​ 
- 
-Non-debugging symbols: 
-0x90990fc8 ​ -[NSWindow setContentMinSize:​] 
-0x90a34f5b ​ -[NSWindow setMinSize:​] 
-0x90f3ac9b ​ -[NSWindowTemplate setMinSize:​] 
-0x90f3ad8e ​ -[NSWindowTemplate setContentMinSize:​] 
- 
-Set a break for each of those: 
-b *0x90990fc8 
-b *0x90a34f5b 
-b *0x90f3ac9b 
-b *0x90f3ad8e 
- 
-maybe write a "​ret"​ at 0x90a34f5b? ​ if only I could find this call in the actual disassembled code (i can'​t). 
- 
-There are two calls for setMinSize and one for setContentMinSize. ​ Apparently all three need to be skipped. ​ Break on the addresses, and type "​ret"​ to skip their work. 
- 
-To find out what is calling them, break on the calling function address after checking with '​bt'​. 
- 
-(gdb) bt 2 
-#0  0x90a34f5b in -[NSWindow setMinSize:​] () 
-#1  0x9092facd in -[NSWindowTemplate nibInstantiate] () 
-(More stack frames follow...) 
- 
-(gdb) b *0x9092facd 
-Breakpoint 14 at 0x9092facd 
-(gdb)  
- 
-sudo port install binutils (which gets us objdump) 
- 
-Breakpoint 2, 0x90a34f5b in -[NSWindow setMinSize:​] () 
-(gdb) ret 
-Make selected stack frame return now? (y or n) y 
-#0  0x9092facd in -[NSWindowTemplate nibInstantiate] () 
-(gdb) c 
-Continuing. 
- 
-Breakpoint 1, 0x90990fc8 in -[NSWindow setContentMinSize:​] () 
-(gdb) ret 
-Make selected stack frame return now? (y or n) y  
-#0  0x9092fcac in -[NSWindowTemplate nibInstantiate] () 
-(gdb) c 
-Continuing. 
- 
-Breakpoint 2, 0x90a34f5b in -[NSWindow setMinSize:​] () 
-(gdb) ret 
-Make selected stack frame return now? (y or n) y 
-#0  0x00160c78 in ?? () 
-(gdb) c 
-Continuing. 
- 
-</​code>​ 
skype5_gdb.1298293911.txt.gz ยท Last modified: 2011/02/21 08:11 by ben