Index: tools/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py |
diff --git a/tools/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py b/tools/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py |
index 603e769910b1e1e9c481cff88330c6a4017c3449..041de993f34800825391013ba347014e0fc14f96 100644 |
--- a/tools/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py |
+++ b/tools/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py |
@@ -34,6 +34,23 @@ def ParseCrashpadDateTime(date_time_str): |
return datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S') |
+def GetSymbolBinary(executable, os_name): |
+ # Returns binary file where symbols are located. |
+ if os_name == 'mac': |
+ version_dir = os.path.join(os.path.dirname(executable), |
+ '..', |
+ 'Versions') |
+ for version_num in os.listdir(version_dir): |
+ framework_file = os.path.join(version_dir, |
+ version_num, |
+ 'Chromium Framework.framework', |
+ 'Chromium Framework') |
+ if os.path.isfile(framework_file): |
+ return framework_file |
+ |
+ return executable |
+ |
+ |
class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
"""The backend for controlling a locally-executed browser instance, on Linux, |
Mac or Windows. |
@@ -453,7 +470,8 @@ class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
cmd = [ |
sys.executable, |
generate_breakpad_symbols_command, |
- '--binary=%s' % self._executable, |
+ '--binary=%s' % GetSymbolBinary(self._executable, |
+ self.browser.platform.GetOSName()), |
'--symbols-dir=%s' % symbols_path, |
'--build-dir=%s' % self._browser_directory, |
] |