add builtin commands (pro, pri)

This commit is contained in:
Laurent Sansonetti
2012-09-20 01:57:38 +02:00
parent db7438049d
commit 120a05b4d6
4 changed files with 61 additions and 8 deletions

View File

@@ -9,15 +9,15 @@ task :files do
end
task :deploy do
if !File.exist?('deploy') or File.mtime('deploy.m') > File.mtime('deploy')
sh "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -mmacosx-version-min=10.6 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -I./src -std=c99 -Wall -O3 deploy.m -o deploy -framework Foundation"
if !File.exist?('deploy') or File.mtime('deploy.m') > File.mtime('deploy') or File.mtime('builtin_debugger_cmds.h') > File.mtime('deploy')
sh "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -mmacosx-version-min=10.6 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -I./src -std=c99 -Wall -O3 deploy.m -o deploy -framework Foundation -I."
sh "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -x deploy"
end
end
task :sim do
if !File.exist?('sim') or File.mtime('sim.m') > File.mtime('sim')
sh "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -mmacosx-version-min=10.6 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -I./src -std=c99 -Wall -O3 sim.m -o sim -framework Foundation -framework ApplicationServices -ledit"
if !File.exist?('sim') or File.mtime('sim.m') > File.mtime('sim') or File.mtime('builtin_debugger_cmds.h') > File.mtime('sim')
sh "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -mmacosx-version-min=10.6 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -I./src -std=c99 -Wall -O3 sim.m -o sim -framework Foundation -framework ApplicationServices -ledit -I."
sh "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -x sim"
end
end

View File

@@ -0,0 +1,31 @@
#define cmd_pro ""\
"if $argc != 1\n"\
"help print-ruby-object\n"\
"else\n"\
"po rb_inspect($arg0)\n"\
"end\n"
#define cmd_pri ""\
"if $argc == 1\n"\
"po rb_inspect((void *)rb_ivar_get(self, (void *)rb_intern($arg0)))\n" \
"else\n"\
"if $argc == 2\n"\
"po rb_inspect((void *)rb_ivar_get($arg0, (void *)rb_intern($arg1)))\n" \
"else\n"\
"help print-ruby-ivar\n"\
"end\n"\
"end\n"
#define BUILTIN_DEBUGGER_CMDS ""\
"define print-ruby-object\n" cmd_pro "end\n"\
"define pro\n" cmd_pro "end\n"\
"document print-ruby-object\n"\
"print-ruby-object(obj): inspects the given 'obj'\n"\
"end\n"\
"define print-ruby-ivar\n" cmd_pri "end\n"\
"define pri\n" cmd_pri "end\n"\
"document print-ruby-ivar\n"\
"print-ruby-ivar(name): inspects the given instance variable 'name' on self\n"\
"print-ruby-ivar(rcv, name): inspects the given instance variable 'name' on 'rcv'\n"\
"end\n"

View File

@@ -1,5 +1,6 @@
#import <Foundation/Foundation.h>
#include <dlfcn.h>
#include "builtin_debugger_cmds.h"
typedef void *am_device_t;
typedef void *afc_conn_t;
@@ -477,14 +478,22 @@ start_debugger(am_device_t dev)
"set inferior-auto-start-dyld 1\n"\
"set inferior-auto-start-cfm off\n"\
"set sharedLibrary load-rules dyld \".*libobjc.*\" all dyld \".*CoreFoundation.*\" all dyld \".*Foundation.*\" all dyld \".*libSystem.*\" all dyld \".*AppKit.*\" all dyld \".*PBGDBIntrospectionSupport.*\" all dyld \".*/usr/lib/dyld.*\" all dyld \".*CarbonDataFormatters.*\" all dyld \".*libauto.*\" all dyld \".*CFDataFormatters.*\" all dyld \"/System/Library/Frameworks\\\\\\\\|/System/Library/PrivateFrameworks\\\\\\\\|/usr/lib\" extern dyld \".*\" all exec \".*\" all\n"\
"sharedlibrary apply-load-rules all\n"\
"break rb_exc_raise\n"\
"continue\n",
"sharedlibrary apply-load-rules all\n",
device_support_path, device_support_path, device_support_path,
[[app_remote_path stringByDeletingLastPathComponent]
stringByReplacingOccurrencesOfString:@"/private/var"
withString:@"/var"], [app_path stringByDeletingLastPathComponent],
app_remote_path, gdb_unix_socket_path, app_path, dsym_path];
cmds = [cmds stringByAppendingFormat:@"%s\n", BUILTIN_DEBUGGER_CMDS];
NSString *user_cmds = [NSString stringWithContentsOfFile:
@"debugger_cmds" encoding:NSUTF8StringEncoding error:nil];
if (user_cmds != nil) {
cmds = [cmds stringByAppendingString:user_cmds];
cmds = [cmds stringByAppendingString:@"\n"];
}
if (getenv("no_continue") == NULL) {
cmds = [cmds stringByAppendingString:@"continue\n"];
}
assert([cmds writeToFile:cmds_path atomically:YES
encoding:NSASCIIStringEncoding error:nil]);

View File

@@ -12,6 +12,8 @@
#include <sys/socket.h>
#include <sys/un.h>
#include "builtin_debugger_cmds.h"
@interface Delegate : NSObject
- (NSString *)replEval:(NSString *)expression;
@end
@@ -799,7 +801,18 @@ again:
[NSArray arrayWithObjects:NSTemporaryDirectory(), @"_simgdbcmds",
nil]];
//if (![[NSFileManager defaultManager] fileExistsAtPath:cmds_path]) {
NSString *cmds = @"set breakpoint pending on\nbreak rb_exc_raise\nbreak malloc_error_break\n";
NSString *cmds = @""\
"set breakpoint pending on\n"\
"break rb_exc_raise\n"\
"break malloc_error_break\n";
cmds = [cmds stringByAppendingFormat:@"%s\n",
BUILTIN_DEBUGGER_CMDS];
NSString *user_cmds = [NSString stringWithContentsOfFile:
@"debugger_cmds" encoding:NSUTF8StringEncoding error:nil];
if (user_cmds != nil) {
cmds = [cmds stringByAppendingString:user_cmds];
cmds = [cmds stringByAppendingString:@"\n"];
}
if (getenv("no_continue") == NULL) {
cmds = [cmds stringByAppendingString:@"continue\n"];
}