Re: Breakpoint when NSString gets set to a certain value?
Re: Breakpoint when NSString gets set to a certain value?
- Subject: Re: Breakpoint when NSString gets set to a certain value?
- From: Jerry Krinock <email@hidden>
- Date: Sat, 20 Jul 2013 01:04:48 -0700
On 2013 Jul 19, at 23:59, Kyle Sluder <email@hidden> wrote:
> This method does not exist. In fact, as far as I can tell, there are no
> initializers for __NSCFString *at all*:
Thank you, Kyle. Yes, I see the NSString documentation also mentions that it has "no designated initializer".
> your approach does not sound like the most efficient way to debug your actual problem, which is far more likely that someone is holding on to your NSURL object longer than they should be.
Indeed, that's what I'm looking for. It's apparently not obvious though, because this manual-retain/release project passes the clang static analyzer with 0 warnings.
> Have you tried running under the Allocations instrument?
No, I'll study that. I'd thought that Leaks would be better because it filters allocations to show only leaked allocations, whereas Allocations shows the whole fire-hose.
I'd thought that watching for an NSString to be initialized to the value of the leaked string would be a neat trick. Simple idea, but maybe it's not do-able, due to the opacity of that class cluster machinery.
* * *
Unfortunately, it does look like I need to find that string, because I can't find it in a URL. Here is why I thought it was part of a URL…
leaks Report Version: 2.0
Process 34235: 105989 nodes malloced for 11852 KB
Process 34235: 6 leaks for 352 total leaked bytes.
Leak: 0x1051bac30 size=64 zone: DefaultMallocZone_0x100703000 __NSCFString ObjC CoreFoundation "file://localhost/Applications/Safari.app/"
Leak: 0x1051bac70 size=64 zone: DefaultMallocZone_0x100703000 NSURL ObjC CoreFoundation
0x7cc78fa0 0x00007fff 0x00001d80 0x00000001 ...|............
0x6005d829 0x08000100 0x051bac30 0x00000001 )..`....0.......
0x00000000 0x00000000 0x051ba950 0x00000001 ........P.......
0x00000000 0x00000000 0x00000000 0x00000000 ................
...
You see two leaks, a __NSCFString whose value is "file://localhost/Applications/Safari.app/", and an NSURL. In the 64 bytes of that NSURL, the 0x051bac30 in line 2 column 3 of those NSURL bytes looks like part of a pointer to that string, at 0x1051bac30, and presumably it's an instance variable. But when I break on the designated initializer (thanks Kyle) -[NSURL initWithString:relativeToURL:] and log the two parameters, I never see anything like "file://localhost/Applications/Safari.app/". Not so smart, after all :(
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden