Hi All,

So—I am trying to use swizzling for my first ever and my goal is to swizzle 
`alloc`. Why? I want to run a unqiued counter of where my objects are allocated 
by analyzing the call stack symbols. Sort of like Valgrind so that I can see 
where my program is leaking data—but I figured since I don't know how to parse 
Valgrind Objective-C might be an easier way to get something very similar.

Unfortunately when I follow this guide to swizzle the methods—I am getting a 
segmentation fault. 
https://newrelic.com/blog/best-practices/right-way-to-swizzle

He basically tell me to do: 
> 
>         id gtkDebugAlloc(id self, SEL cmd) { .... } 
> 
>         {
>              Method nsObjectAllocMethod = class_getClassMethod([NSObject 
> class], @selector(alloc));
>              IMP orginalAlloc = 
> method_setImplementation(nsObjectAllocMethod,(IMP)gtkDebugAlloc);
>         }

Instead of:

>         @interface GTKDebugObject
>         @end
>         @implementation GTKDebugObject
>         +(id)alloc { id toReturn = [self 
> allocWithZone:NSDefaultMallocZone()]; if (toReturn { ... } return toReturn;  }
>         @end
>         
>         {
>         
>              Method nsObjectAllocMethod = class_getClassMethod([NSObject 
> class], @selector(alloc));
>              Method gtkObjectAllocMethod = 
> class_getClassMethod([GTKDebugObject class], @selector(alloc));
>       method_exchangeImplementations(nsObjectAllocMethod, 
> gtkObjectAllocMethod);

>         
>       }


Both methods immediatley give me a segmentation fault when I run this.

Not really sure where to begin debugging this given it's my first time ever 
swizzling something.

Another approaoch would be to have my own build of `Foundation`. I am probably 
going to do that next—but this would be a much handier tool if I didn't have to 
rebuild my system everytime I wanted to debug my mistakes. So far, I don't 
really know how to tell GNUmake to use another version of Foundation.

It seems like I can change my Foundation library for cross-compiling but not 
the location of Foundation lookup. 

         . /usr/GNUstep/System/Library/Makefiles/GNUstep-reset.sh
         export LIBRARY_COMBO=ng-gnu-gnu
         . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
Ref: http://manpages.ubuntu.com/manpages/impish/man7/library-combo.7.html

Seeing also: http://www.gnustep.org/resources/documentation/make_1.html#SEC33

Would appreciate the help as I go off and bang my head on this. Might have a 
very easy solution. 

Thank for any help in advance,

G

Reply via email to