PDFs


This page applies to an earlier version of the AppDynamics App IQ Platform.
See the latest version of the documentation.


On this page:

Related pages:

Your Rating:
Results:
PatheticBadOKGoodOutstanding!
45 rates

AppDynamics needs the dSYM file for the application to produce human-readable stack traces for crash snapshots. For details about why you should do this, see Get Human-Readable Crash Snapshots

If you update the application, you need to provide the new dSYM file for the new application version. The dSYM file contains a UUID that links it to a specific Xcode build, so AppDynamics can unambiguously match the correct dSYM file with an incoming crash report with no additional information.

To upload the dSYM file, you do the following:

Enable the dSYM File

To enable the agent to provide human-readable information in the crash snapshots that are produced if the application crashes, compile with the DWARF with dSYM file option to create a debug symbols file for the application.

To enable dSYM

  1. In Xcode, select your project in the Project Navigator.
  2. In the target list, select the target that builds your application.
  3. Select the Build Settings tab.
  4. In the Build Options section, make sure that the Debugging Information Format is set to DWARF with dSYM File.

Upload the dSYM File to AppDynamics Automatically with Each Build

Automating the upload of your dSYM file reduces the number of manual steps required for each build and ensures that all builds have appropriate dSYM files available for AppDynamics to use.

  1. In Xcode, select your project from the Project Navigator.
  2. Click on the application target.
  3. Select the Build Phase tab in the Settings editor.
  4. Click the + icon in the upper left corner of the main panel.
  5. Select New Run Script Phase from the dropdown.
  6. In the script box, add the following lines:

    export ADRUM_ACCOUNT_NAME="<Account_Name_HERE>" // From the View License - End User Monitoring section of the License Page
    export ADRUM_LICENSE_KEY="<License_Key_HERE>"  // From the View License - End User Monitoring section of the License Page
    SCRIPT=$(/usr/bin/find "${SRCROOT}" -name xcode_build_dsym_upload.sh | head -n 1)
    /bin/sh "${SCRIPT}"
  7. There are also some optional parameters you can set if desired. To set them, add the following line(s) after the second export statement above. Set to 1 to enable.

    export ADRUM_UPLOAD_WHEN_BUILT_FOR_SIMULATOR=0
    export ADRUM_TREAT_UPLOAD_FAILURES_AS_ERRORS=0
    export ADRUM_EUM_PROCESSOR="<EUM_SERVER_URL>"

    The last statement should be used to set the URL for an on-prem version of the EUM Server.

Upload the dSYM File to AppDynamics Manually

There are three steps to upload the file manually.
  1. Get the dSYM file from Xcode
  2. Upload the dSYM file to AppDynamics using the UI
    or
    Upload the dSYM File to AppDynamics Using the API
  3. Check Uploaded dSYMs Using the REST API

Get the dSYM file from Xcode

  1. In Xcode, run the Xcode build: Product > Build.
  2. View the log navigator: View > Navigators > Show Report Navigator.

    Older versions of Xcode used Show Log Navigator

  3. Click the log entry for the most recent build.
  4. Near the end of the log, find and mouse over the log entry named Generate <Your_App_Name>.app.dSYM.
  5. Click the button on the right side of the entry to expand it.
    The end of the displayed command is the path to the dSYM file.
  6. Navigate to this dSYM file in the Finder.
  7. Right-click on the dSYM file and choose Compress.
  8. Upload to AppDynamics the .zip file that Finder generates.

Upload the dSYM file to AppDynamics Using the UI

  1. From the Mobile App menu, click Configuration.
  2. Click Mobile App Configuration >.
  3. From dSYM Mappings, click Upload dSYM package file for iOS crashes.
  4. From the XCode dSYM package upload dialog, click Choose File.
    The uploader expects a file with a .zip extension.
  5. In the file browser locate the zipped dSYM file for the application that you are instrumenting and click Open.
  6. Click Upload.

Upload the dSYM File to AppDynamics Using the REST API

The API uses HTTP basic authentication. The username is your EUM account name and the password is your EUM license key.

Set up your HTTP basic authentication credentials
  1. In the upper-right corner of the Controller UI, click the gear icon () and choose License.

  2. From the Account Usage tab, scroll down to the User Experience section.
  3. Click Show next to License Key to display the EUM license key. This is your password for authentication.
  4. URL-encode the EUM account name and the EUM license key.

Send the dSYM file

Send the dSYM as a zip archive in the body of a PUT request to the following URI:

https://api.eum-appdynamics.com/v2/account/<EUM_Account_Name>/ios-dsym


You must set a Content-Type header, -H Content-Type:application/octet-stream, and your URL-encoded EUM account name (the username) and EUM license key (the password) to the call.

Sample Request and Response

This is a sample request and response using the REST API.

Upload Request

The following example uses curl to send a dSYMm file named UISampleApp.app.dSYM.zip. The username (the EUM account name) is "Example account " and the password (the EUM license key) is "Example-License-Key-4e8ec2ae6cfe". The plus signs replace spaces in the account name when the account name is URL-encoded.

curl -v -H Content-Type:application/octet-stream --upload-file UISampleApp.app.dSYM.zip --user Example+account:Example-License-Key-4e8ec2ae6cfe https://api.eum-appdynamics.com/v2/account/Example+account/ios-dsym 
Upload Response

The successful output of the sample request looks like this:

* About to connect() to api.eum-appdynamics.com port 443 (#0)*   Trying ::1...
* connected
* Connected to api.eum-appdynamics.com (::1) port 443 (#0)
* Server auth using Basic with user 'Example+account'
> PUT /v2/account/Example+Account/ios-dsym  HTTP/1.1
> Authorization: Basic SW50ZXJuYWwrdGVzdCthY2NvdW50OlRlc3RBY2N0LTFlMzktNDVkMy05MzAzLTRlOGVjMmFlNmNmZQ==
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
> Host: localhost:7001
> Accept: */*
> Content-Length: 0
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Content-Length: 0
< Server: Jetty(8.1.4.v20120524)
<
* Connection #0 to host api.eum-appdynamics.com left intact
* Closing connection #0

Check Uploaded dSYMs Using the REST API

You can check to make sure that your dSYMs have successfully uploaded using two REST APIs.

  1. Get a list of the UUIDs for the last 50 dSYMs you have uploaded
  2. Check if a specific dSYM has been uploaded

List of the Last 50 dSYMs uploaded

The dsymQuery method allows you to retrieve a list of UUIDs for up to the last 50 dSYM files that have been uploaded to your account, along with the time they were uploaded. The response is displayed as JSON, by upload time, with the most recent first.

  1. Set up your authentication as described in Upload the dSYM File to AppDynamics Using the REST API.

  2. Create a GET request of the form:

    curl --user Example+account:Example-License-Key-4e8ec2ae6cfe https://<EUM_Cloud/Server_Host:Port>/v2/account/Example+account/crash-symbol-file-query/dsym

    where the value for --user is the authentication string you created in Upload the dSYM File to AppDynamics Using the REST APIEUM_Cloud/Server is api.eum-appdynamics.com:443 for SaaS-based EUM Cloud accounts or as configured for on-premises EUM Servers.

Sample Request
curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://api.eum-appdynamics.com:443/v2/account/Example+account/crash-symbol-file-query/dsym
Sample Response 
{"dSymFiles":[
{"uploadTime":"mm/dd/yyyy 14:15:32","UUID2":"my_uuid2"},
{"uploadTime":"mm/dd/yyyy 14:15:32","UUID":"my_uuid"}
]}

Check for specific dSYM by UUID

The checkForDSymFile method allows you to check if a specific dSYM by UUID has been uploaded. The upload time is returned in the response.

  1. Set up your authentication as described in Upload the dSYM File to AppDynamics Using the REST API.
  2. Create a GET request of the form:

    curl --user Example+account:Example-License-Key-4e8ec2ae6cfe https://<EUM_Cloud/Server_Host:Port>/v2/account/Example+account/crash-symbol-file-query/dsym/uuid/<UUID_to_check>

    where the value for --user is the authentication string you created in Upload the dSYM File to AppDynamics Using the REST APEUM_Cloud/Server is api.eum-appdynamics.com:443 for SaaS-based EUM Cloud accounts or as configured for on-premises EUM Servers, and UUID_to_check is the UUID of the dSYM in which you are interested.

    Sample Request
    curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://<EUM_Cloud/Server_Host:Port>/v2/account/Example+account/crash-symbol-file-query/dsym/uuid/<UUID_to_check>
    Sample Response
    {"uploadTime":"mm/dd/yyyy 14:15:32","UUID":"my_uuid"}
  • No labels