jdog
jdog

Reputation: 10769

Xcode's Profiler does not show Symbol names

Updated to xCode 4.5 and when time profiling my app Symbol Name doesn't show classes or objects anymore, but shows memory addresses see below.

0x2fd42e13
0x38014448

I used to see the following

main
NSManagedObjectContext

When I could see the class names then I can track down the issues in the extended detail. Now the extended detail shows the same thing as the 0x2fd42e13.

Upvotes: 28

Views: 13165

Answers (11)

Leonid Silver
Leonid Silver

Reputation: 494

Had this problem after updating to Xcode 15.4, and nothing was helping. Solution was to update macOS and my iPhone to the latest versions, and launch Instruments on iPhone

Upvotes: 0

Porter Child
Porter Child

Reputation: 152

An Xcode restart fixed it for me, on Xcode 13.3.

Upvotes: 0

Beyond Chao
Beyond Chao

Reputation: 115

I have same problem in Xcode 11.4 1. Show your YOUR_PROJECT.app folder in Xcode while build success , find Release-iphoneos or Debug-iphoneos folder, select which on determined by your Profile`s build setting. normally we choice Release-iphoneos. 2. Add that path to Instruments in 【Preferences】->【Symbols】 to search YOUR_PROJECT.app.dSYM file.

enter image description here

Upvotes: 0

Nathan F.
Nathan F.

Reputation: 3489

To resolve my issue I had to tell Instruments where my binary was as it had lost track of it for some reason.

1. Run Instruments as you normally would to get the masked data.

enter image description here

2. In the Project Navigator, expand the Products folder and click your application (either provider (.appex) or application (.app). If your File Inspector is not visible, right click the application and click "Show File Inspector"

enter image description here

3. On the right side of your screen you should now see the file inspector for your binary. Opposite click on the "Full Path" property and click "Copy".

enter image description here

4. Go back into Instruments and go to File->Symbols

enter image description here

5. Drop down your application or provider on the left and click on the item with the dot next to it (it should have the same name as your application)

enter image description here

6. You'll notice that the Binary Path is red. This means that Instruments has lost track of your binary file. Click the small folder icon on the bottom right to bring up a Select File dialog. Press Command+Shift+G to enter a directory path, and paste the path that we copied from xcode earlier.

enter image description here

7. You should now have the binary selected, click Open to open it. Click done on the Dialog to close the windows. Instruments should now show the proper details and symbol names while profiling your code.

enter image description here

  1. If this reoccurs, and your binary is located at a path like /Users/<User>/Library/Developer/Xcode/DerivedData/..., you will need to add this to your default search path in Instruments. /Library is not indexed by Spotlight, so is not searched for by Instruments. Go to Instruments > Preferences > Symbols, and add /Users/<User>/Library/Developer/Xcode/DerivedData/.

Upvotes: 44

JerryZhou
JerryZhou

Reputation: 5206

Reset the build path to default. I have changed it to tmp/ folder previously and symbol can't show the code. After reset this path and profiler can show the code correct. Build Path(Relative to Derived Data) setting as bellow: Build Path

Upvotes: 0

Sai
Sai

Reputation: 128

Restart Instruments and Xcode solved my problem :(

Upvotes: 2

YON
YON

Reputation: 1737

I know this is an old question, but none of the solutions mentioned above worked for me. I need to switch to the latest iOS simulator (use iOS 9 instead of iOS 8 currently) to show symbol name correctly. I think Xcode Instruments can only work with simulator which run latest iOS SDK.

Upvotes: 2

Chris Garrett
Chris Garrett

Reputation: 4924

I was the having same problem and tried the other solutions to no avail. The Scheme issue is usually the problem, so I started there. But in my case it was already configured properly. Here's what finally worked for me:

  • In Instruments, stop the process if it's running.
  • Go to File -> Symbols, and under dSYM path, find the library that isn't being symbolicated.
  • In my case, it was pointing to items in the Trash. So I emptied the Trash, deleted the Module Cache and project in the Derived Data folder, and when I rebuilt the project it started working again. In your case it could be pointing to some other file that either doesn't exist or isn't reachable by Instruments.

Upvotes: 1

Mithuzz
Mithuzz

Reputation: 1091

Me too had the same issue and I tried all steps that others suggested. But none of them fixed the issue for me. So, what I did is, I just opened the Instruments and next to the Record button, click on the drop down menu and select the target using Choose target option. Then click on Record button, now I could see all the methods in the instruments panel :)

Upvotes: 2

fishinear
fishinear

Reputation: 6346

Profiling the debug configuration will not give you correct profile values. The debug configuration is not compiled for speed, and all your NSLog statements are still in.

I created a "Profile" build configuration to deal with this issue. See my answer to a similar Stackoverflow question.

Upvotes: 2

jdog
jdog

Reputation: 10769

Solved it myself:

Edit your scheme where it says "WhateverProjectNameIs>iPad 6.0 simulator"

Then click on "Profile" on the left On the Info tab, change Build Configuration to Debug (probably set to Release) That should do it. Note that for whatever reason, the build target is not set to the same build configuration as the profile target and this has tripped me up more than a time or two.

Upvotes: 18

Related Questions