OR
Why you never want to complain about waiting in the airport
while they do a
little maintenance
The Well-Behaved Version
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".tty /dev/ttys000
Loading program into debugger…
Program loaded.
run
[Switching to process 31280]
Portal Pilots Maintenance Flight. Scanning for UNIQUE Time Portals
portals[0] = bridge
portals[1] = creek
portals[2] = path
portals[3] = alley
Running…
Debugger stopped.
Program exited with status value:0.
But Wait!
HERE’S WHAT HAPPENS WHEN THE ARCH-ENEMY OF PORTAL PILOTS MANAGES TO GET HIRED ONTO THE DEVELOPMENT STAFF
(just tought I'd try to access nil and see where it took me!)
// If I ever want to totally gum up the works, I'll make sure to try to access past the end of the array!
Portal Pilots Maintenance Flight. Scanning for UNIQUE Time Portals
portals[0] = bridge
portals[1] = creek
portals[2] = path
portals[3] = alley
2010-11-16 12:14:54.431 encounterPortals[31239:a0f] *** __NSAutoreleaseNoPool(): Object 0x10010cce0 of class NSCFString autoreleased with no pool in place - just leaking
2010-11-16 12:14:54.433 encounterPortals[31239:a0f] *** __NSAutoreleaseNoPool(): Object 0x1001107d0 of class NSCFString autoreleased with no pool in place - just leaking
2010-11-16 12:14:54.433 encounterPortals[31239:a0f] *** __NSAutoreleaseNoPool(): Object 0x1001023b0 of class NSException autoreleased with no pool in place - just leaking
2010-11-16 12:14:54.434 encounterPortals[31239:a0f] *** __NSAutoreleaseNoPool(): Object 0x1001108e0 of class _NSCallStackArray autoreleased with no pool in place - just leaking
2010-11-16 12:14:54.434 encounterPortals[31239:a0f] *** __NSAutoreleaseNoPool(): Object 0x100110a90 of class _NSCallStackArray autoreleased with no pool in place - just leaking
2010-11-16 12:14:54.448 encounterPortals[31239:a0f] *** __NSAutoreleaseNoPool(): Object 0x100110e30 of class NSCFString autoreleased with no pool in place - just leaking
2010-11-16 12:14:54.495 encounterPortals[31239:a0f] *** __NSAutoreleaseNoPool(): Object 0x100111440 of class NSCFString autoreleased with no pool in place - just leaking
2010-11-16 12:14:54.496 encounterPortals[31239:a0f] *** __NSAutoreleaseNoPool(): Object 0x100111890 of class NSConcreteMutableData autoreleased with no pool in place - just leaking
2010-11-16 12:14:54.497 encounterPortals[31239:a0f] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (4) beyond bounds (4)'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff884d8cc4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff86f250f3 objc_exception_throw + 45
2 CoreFoundation 0x00007fff884d8ae7 +[NSException raise:format:arguments:] + 103
3 CoreFoundation 0x00007fff884d8a74 +[NSException raise:format:] + 148
4 Foundation 0x00007fff801db084 _NSArrayRaiseBoundException + 122
5 Foundation 0x00007fff8013db59 -[NSCFArray objectAtIndex:] + 75
6 encounterPortals 0x0000000100000dfd main + 417
7 encounterPortals 0x0000000100000c54 start + 52
8 ??? 0x0000000000000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
Program received signal: “SIGABRT”.
sharedlibrary apply-load-rules all
kill
quit
// encounterPortals
// PortalPilots encounter a variety of Time Portal Types
// based on accesselements page 166, Holzner
#import <Foundation/Foundation.h>
// IMPORTANT STUFF
// 1) End arrays with the nil object
// 2) Use @ to differentiat OBJECTIVE C strings from C-style strings
int main (int argc, const char * argv[]) {
NSArray *portals = [[NSArray alloc] initWithObjects:@"bridge", @"creek",@"path", @"alley", nil];
printf("Portal Pilots Maintenance Flight. Scanning for UNIQUE Time Portals \n");
printf("portals[0] = %s \n", [[portals objectAtIndex: 0] cString]);
printf("portals[1] = %s \n", [[portals objectAtIndex: 1] cString]);
printf("portals[2] = %s \n", [[portals objectAtIndex: 2] cString]);
printf("portals[3] = %s \n", [[portals objectAtIndex: 3] cString]);
// Thought it would be interesting to try to access nil
// Wow! Leaking - What IS leaking? And all kinds of neat errors
//printf("portals[4] = %s \n", [[portals objectAtIndex: 4] cString]);
return 0;
}