Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSThread callStackSymbols logs <redacted> symbols

I am trying to debug some concurrency code and when I log [NSThread callStackSymbols]; the console shows most of the symbols I am interested in as <redacted>.

Is there a way to get around this during runtime? I have deleted the device symbols folder but Xcode re-symbolication didn't seem to fix the issue.

There are a few other questions on here but they all seem to be trying to solve this on crash files.

How can I see the method names for framework symbols in the debug console?

I am running Xcode 5.

like image 375
some_id Avatar asked Nov 24 '13 12:11

some_id


1 Answers

You get all symbols showing up only:

  1. while debugging
  2. when generating a full crash report and symbolicate that.
  3. symbolicating the addresses manually using atos with the corresponding dSYM or system symbols on disk (you need to load address for each framework and binary to do that, also due to Address space layout randomization. Only having callStackSymbols doesn't reveal those). See iOS crash reports: atos not working as expected

The <redacted> symbols are a

Memory optimization. The <redacted> symbol names are stored on disk only, which saves some physical memory and lots of virtual address space in every process.

See https://devforums.apple.com/thread/171264

To sum up: you can NOT get all system symbols showing up using any calls during runtime. Instead you need to create a full crash report by letting the app crash and analyse the stack traces from those.

like image 125
Kerni Avatar answered Oct 20 '22 19:10

Kerni