profile-viewer 0.0.2 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dist/{f0599659345cf76717cd.svg → 118632062f4755918dac.svg} +1 -1
- data/dist/136.4ad3301b8aacf759ea70.bundle.js +2 -0
- data/dist/136.4ad3301b8aacf759ea70.bundle.js.map +1 -0
- data/dist/171.621b9df5978342be5662.bundle.js +2 -0
- data/dist/171.621b9df5978342be5662.bundle.js.map +1 -0
- data/dist/18a5d1d99f1c65c33b71.png +0 -0
- data/dist/1ddbc3ce40af8c7a648b.svg +6 -0
- data/dist/280.b4210a48e650408000c3.bundle.js +2 -0
- data/dist/280.b4210a48e650408000c3.bundle.js.map +1 -0
- data/dist/{79eaad4fc0c398100809.svg → 3a829bf1fcf02598aa4b.svg} +1 -1
- data/dist/556.2be67a37a0c61fdc2485.bundle.js +2 -0
- data/dist/{914.b9bc213d93173ce6b0cb.bundle.js.map → 556.2be67a37a0c61fdc2485.bundle.js.map} +1 -1
- data/dist/874.ca7a11f56438ad874b9d.bundle.js +2 -0
- data/dist/874.ca7a11f56438ad874b9d.bundle.js.map +1 -0
- data/dist/8846b19a497771fe0e9d.svg +4 -0
- data/dist/d6df0017c0241dfe86ff.svg +6 -0
- data/dist/docs/_sidebar.md +1 -0
- data/dist/docs/advanced-topics.md +1 -0
- data/dist/docs/async-posix-signal-control.md +102 -0
- data/dist/docs/guide-startup-shutdown.md +7 -7
- data/dist/docs/js/init.js +1 -1
- data/dist/docs/memory-allocations.md +28 -6
- data/dist/index.html +1 -1
- data/dist/locales/be/app.ftl +21 -3
- data/dist/locales/de/app.ftl +120 -3
- data/dist/locales/el/app.ftl +112 -4
- data/dist/locales/en-CA/app.ftl +1131 -0
- data/dist/locales/en-GB/app.ftl +121 -4
- data/dist/locales/en-US/app.ftl +133 -6
- data/dist/locales/es-CL/app.ftl +112 -4
- data/dist/locales/fr/app.ftl +112 -4
- data/dist/locales/fur/app.ftl +1093 -0
- data/dist/locales/fy-NL/app.ftl +120 -3
- data/dist/locales/ia/app.ftl +111 -3
- data/dist/locales/it/app.ftl +114 -3
- data/dist/locales/kab/app.ftl +39 -2
- data/dist/locales/nl/app.ftl +121 -4
- data/dist/locales/pt-BR/app.ftl +116 -5
- data/dist/locales/ru/app.ftl +120 -3
- data/dist/locales/sv-SE/app.ftl +111 -3
- data/dist/locales/tr/app.ftl +945 -0
- data/dist/locales/uk/app.ftl +112 -4
- data/dist/locales/zh-CN/app.ftl +117 -6
- data/dist/locales/zh-TW/app.ftl +160 -49
- data/dist/main.89ba95fadf0fbee4977a.bundle.js +201 -0
- data/dist/{main.fc4f388a376c68dab444.bundle.js.LICENSE.txt → main.89ba95fadf0fbee4977a.bundle.js.LICENSE.txt} +1 -30
- data/dist/main.89ba95fadf0fbee4977a.bundle.js.map +1 -0
- data/dist/photon/{f0599659345cf76717cd.svg → 118632062f4755918dac.svg} +1 -1
- data/dist/photon/index.html +1 -1
- data/dist/photon/main.fa2aec5d6b214ac1cdb3.bundle.js +2 -0
- data/dist/photon/main.fa2aec5d6b214ac1cdb3.bundle.js.map +1 -0
- data/dist/sw.js +1 -1
- data/dist/sw.js.map +1 -1
- data/dist/{workbox-27b29e6f.js → workbox-e3490c72.js} +2 -2
- data/dist/{workbox-27b29e6f.js.map → workbox-e3490c72.js.map} +1 -1
- data/dist/zee-worker.js +1 -1
- data/ruby-bin/profile-viewer +20 -12
- data/ruby-bin/profile-viewer-version.rb +1 -1
- metadata +32 -29
- data/dist/119.92ddbd8a86d8c3ca559e.bundle.js +0 -2
- data/dist/119.92ddbd8a86d8c3ca559e.bundle.js.map +0 -1
- data/dist/131.c21d348572deab4ece66.bundle.js +0 -2
- data/dist/131.c21d348572deab4ece66.bundle.js.map +0 -1
- data/dist/308.4d236ce7e6451807cb54.bundle.js +0 -2
- data/dist/308.4d236ce7e6451807cb54.bundle.js.map +0 -1
- data/dist/9.32828795506af73ed4a1.bundle.js +0 -2
- data/dist/9.32828795506af73ed4a1.bundle.js.map +0 -1
- data/dist/914.b9bc213d93173ce6b0cb.bundle.js +0 -2
- data/dist/b45b29da558efa211628.jpg +0 -0
- data/dist/b805360fcc91834556c9.svg +0 -4
- data/dist/main.fc4f388a376c68dab444.bundle.js +0 -199
- data/dist/main.fc4f388a376c68dab444.bundle.js.map +0 -1
- data/dist/photon/main.1dffe4a955d6a0630bc4.bundle.js +0 -2
- data/dist/photon/main.1dffe4a955d6a0630bc4.bundle.js.map +0 -1
- /data/dist/{ad13da76642d8099fe70.module.wasm → 2f37d1addc2d2f5b699e.module.wasm} +0 -0
@@ -0,0 +1,4 @@
|
|
1
|
+
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
2
|
+
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
3
|
+
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 16 16"><path fill="#000" d="M14.354 2.353l-.708-.707a2.007 2.007 0 0 0-2.828 0l-.379.379a.5.5 0 0 0 0 .707l2.829 2.829a.5.5 0 0 0 .707 0l.379-.379a2.008 2.008 0 0 0 0-2.829zM9.732 3.439a.5.5 0 0 0-.707 0L3.246 9.218a1.986 1.986 0 0 0-.452.712l-1.756 4.39A.5.5 0 0 0 1.5 15a.5.5 0 0 0 .188-.037l4.382-1.752a1.966 1.966 0 0 0 .716-.454l5.779-5.778a.5.5 0 0 0 0-.707zM5.161 12.5l-2.549 1.02a.1.1 0 0 1-.13-.13L3.5 10.831a.1.1 0 0 1 .16-.031l1.54 1.535a.1.1 0 0 1-.039.165z"></path></svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
2
|
+
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
3
|
+
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
4
|
+
<svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
5
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.731 4.066a8.257 8.257 0 0 0-5.938 7.09h3.266a13.027 13.027 0 0 1 2.672-7.09zm-2.672 8.84h-3.26a8.258 8.258 0 0 0 5.873 7.01 13.025 13.025 0 0 1-2.613-7.01zm4.911 7.01a11.295 11.295 0 0 1-3.157-7.01h6.369a11.296 11.296 0 0 1-3.212 7.01zm-3.157-8.76a11.298 11.298 0 0 1 3.217-7.072 11.299 11.299 0 0 1 3.161 7.072H8.813zm8.132 0a13.027 13.027 0 0 0-2.616-7.073 8.257 8.257 0 0 1 5.878 7.073h-3.262zm-.008 1.75a13.026 13.026 0 0 1-2.669 7.028 8.257 8.257 0 0 0 5.933-7.028h-3.264z" fill="#000" />
|
6
|
+
</svg>
|
data/dist/docs/_sidebar.md
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
* [Perf profiling on Linux](./guide-perf-profiling.md)
|
16
16
|
* [Perf profiling on Android](./guide-android-profiling.md)
|
17
17
|
* [IPC Messages](./ipc-messages.md)
|
18
|
+
* [Profiler control using POSIX signals](./async-posix-signal-control.md)
|
18
19
|
* [Video Tutorials](./videos.md)
|
19
20
|
* [Firefox Profiler intro](./videos-intro.md)
|
20
21
|
* [Samples and markers](./videos-samples-markers.md)
|
@@ -0,0 +1,102 @@
|
|
1
|
+
|
2
|
+
# Profiler control using POSIX signals
|
3
|
+
|
4
|
+
The Firefox profiler supports the use of asynchronous POSIX signals for a
|
5
|
+
limited number of operations, specifically starting and stopping the profiler.
|
6
|
+
This can be useful in situations where the normal UI or keyboard shortcut
|
7
|
+
control of the profiler is not available.
|
8
|
+
|
9
|
+
In brief, a user can send the POSIX signal `SIGUSR1` to the main Firefox process
|
10
|
+
to start the profiler, and the signal `SIGUSR2` to stop the profiler. Upon
|
11
|
+
recieiving the "stop" signal, the profiler will collect the current profile data
|
12
|
+
and write it to a `.json` file in the user's downloads directory. For example,
|
13
|
+
on MacOS:
|
14
|
+
|
15
|
+
// Send signal USR1 to the first (main) process of Firefox.app to start the profiler
|
16
|
+
kill -s USR1 `pgrep -f Firefox.app | head -n 1`
|
17
|
+
// wait for firefox to gather some data
|
18
|
+
sleep 10
|
19
|
+
// Send signal USR2 to the same process to stop the profiler
|
20
|
+
kill -s USR2 `pgrep -f Firefox.app | head -n 1`
|
21
|
+
// Find the result in the download folder
|
22
|
+
ls ~/Downloads/ | grep "profile.*json"
|
23
|
+
|
24
|
+
From there, the user can open the written profile using the standard profiler
|
25
|
+
UI, by navigating to [profiler.firefox.com](https://profiler.firefox.com), and selecting
|
26
|
+
"Load a profile from file".
|
27
|
+
|
28
|
+
Typically, sending a signal to a program is done using the `kill`
|
29
|
+
[command](https://man7.org/linux/man-pages/man1/kill.1.html), as seen in the
|
30
|
+
above example. It is important to specify the correct signal, as the default is
|
31
|
+
`TERM`, which will terminate the program. For the profiler, only signals
|
32
|
+
`SIGUSR1` (for starting) and `SIGUSR2` (for stopping) should be used. Note that they
|
33
|
+
are written without the `SIG` prefix when used as an argument to `kill` i.e.:
|
34
|
+
|
35
|
+
kill -s USR1 <firefox pid> // start the profiler
|
36
|
+
kill -s USR2 <firefox pid> // stop the profiler
|
37
|
+
|
38
|
+
// Alternative syntax
|
39
|
+
kill -USR1 <firefox pid>
|
40
|
+
kill --signal USR1 <firefox pid>
|
41
|
+
|
42
|
+
!> Only the process ID of the "main" process should be used. Child processes are
|
43
|
+
controlled by the parent process via IPC, and are unable to write their
|
44
|
+
processes to disk (due to sandboxing restrictions), so are not useful to profile
|
45
|
+
using signals.
|
46
|
+
|
47
|
+
The process ID of a running instance of Firefox can be found in a number of
|
48
|
+
ways, for instance:
|
49
|
+
|
50
|
+
pgrep -f Firefox.app // On MacOS
|
51
|
+
pidof Firefox // on Linux
|
52
|
+
|
53
|
+
In case of confusion, the main process is typically the one with lowest ID, when
|
54
|
+
sorted numerically.
|
55
|
+
|
56
|
+
Signal support is intended as a last-ditch debugging tool for situations where
|
57
|
+
we want to be able to diagnose issues with Firefox, but may not be able to use
|
58
|
+
the existing UI controls or Keyboard shortcuts to start/stop the profiler. For
|
59
|
+
example, if we encounter a prolonged freeze while browsing, it may be useful to
|
60
|
+
capture a profile by using POSIX signals to start and stop the profiler.
|
61
|
+
|
62
|
+
In a "normal" profiling flow, the resulting profile is communicated to the
|
63
|
+
profiler front-end directly, and then displayed to the user at the end of a
|
64
|
+
profiling session. The signal-controlled profiler bypasses this flow, and
|
65
|
+
instead writes a profile to disk. This makes it possible for us to debug in
|
66
|
+
situations where we may not be able to access the profiler UI in the same
|
67
|
+
session of firefox as the one we are debugging, with the small added friction of
|
68
|
+
needing to directly load the profile.
|
69
|
+
|
70
|
+
## Limitations
|
71
|
+
|
72
|
+
The current implementation of POSIX signal support has a number of important
|
73
|
+
limitations that potential users need to be aware of:
|
74
|
+
|
75
|
+
* The profiler currently uses a set of "default"
|
76
|
+
[values](https://searchfox.org/mozilla-central/rev/7a8904165618818f73ab7fc692ace4a57ecd38c9/tools/profiler/core/platform.cpp#633)
|
77
|
+
when started using signals. There are currently plans to support configuration
|
78
|
+
(see [Bug 1866007](https://bugzilla.mozilla.org/show_bug.cgi?id=1866007) for
|
79
|
+
further information).
|
80
|
+
* Async signal handling is currently only supported and tested on POSIX native
|
81
|
+
platforms, i.e. Linux and MacOS. Support for Windows is planned, but not yet
|
82
|
+
implemented (see [Bug
|
83
|
+
1867328](https://bugzilla.mozilla.org/show_bug.cgi?id=1867328) for further
|
84
|
+
information).
|
85
|
+
* The "stop" signal must be sent to Firefox's "main" process. This is due to
|
86
|
+
Firefox's sandboxing rules, which disallow non-main processes (in general)
|
87
|
+
from opening file handles. Because of this, individual processes cannot dump
|
88
|
+
their own data to disk, so cannot individually handle the stop signal.
|
89
|
+
* Signal support in the Firefox profiler is incompatible with Firefox's [code
|
90
|
+
coverage](https://firefox-source-docs.mozilla.org/tools/code-coverage/index.html)
|
91
|
+
tooling, as both rely on the same POSIX signals (`SIGUSR1` and `SIGUSR2`). In
|
92
|
+
an ideal world we could use Linux's
|
93
|
+
[real-time](https://man7.org/linux/man-pages/man7/signal.7.html) signals
|
94
|
+
instead, as they offer a much larger set of user-defined signals that would
|
95
|
+
not clash with the signals used by the code coverage tool. Unfortunately,
|
96
|
+
MacOS does not support these signals, so we are limited to the smaller set of
|
97
|
+
signals in order to support a wider set of platforms.
|
98
|
+
* Although signals are used to start/stop the profiler, the aggregation of
|
99
|
+
content-process profiles is still done using "traditional" Firefox IPC calls.
|
100
|
+
If, therefore, you are using signals to diagnose issues with a "stuck" main
|
101
|
+
thread in the main process, Firefox may not be able to aggregate child content
|
102
|
+
process profiles.
|
@@ -40,7 +40,7 @@ If you have compiled GeckoView-example locally, you can launch it with `./mach r
|
|
40
40
|
```bash
|
41
41
|
./mach run --setenv MOZ_PROFILER_STARTUP=1 \
|
42
42
|
--setenv MOZ_PROFILER_STARTUP_INTERVAL=5 \
|
43
|
-
--setenv MOZ_PROFILER_STARTUP_FEATURES=
|
43
|
+
--setenv MOZ_PROFILER_STARTUP_FEATURES=js,stackwalk,screenshots,ipcmessages,java,processcpu,cpu \
|
44
44
|
--setenv MOZ_PROFILER_STARTUP_FILTERS="GeckoMain,Compositor,Renderer,IPDL Background"
|
45
45
|
```
|
46
46
|
|
@@ -50,7 +50,7 @@ Alternatively, if you have installed GeckoView-example from another source, you
|
|
50
50
|
adb shell am start -n org.mozilla.geckoview_example/.App \
|
51
51
|
--es env0 MOZ_PROFILER_STARTUP=1 \
|
52
52
|
--es env1 MOZ_PROFILER_STARTUP_INTERVAL=5 \
|
53
|
-
--es env2 MOZ_PROFILER_STARTUP_FEATURES=
|
53
|
+
--es env2 MOZ_PROFILER_STARTUP_FEATURES=js,stackwalk,screenshots,ipcmessages,java,processcpu,cpu \
|
54
54
|
--es env3 MOZ_PROFILER_STARTUP_FILTERS="GeckoMain,Compositor,Renderer,IPDL Background"
|
55
55
|
```
|
56
56
|
|
@@ -58,15 +58,15 @@ adb shell am start -n org.mozilla.geckoview_example/.App \
|
|
58
58
|
|
59
59
|
Fenix has a [different way](https://firefox-source-docs.mozilla.org/mobile/android/geckoview/consumer/automation.html#reading-configuration-from-a-file) to specify environment variables: it uses a yaml file.
|
60
60
|
|
61
|
-
The easiest way to set up startup profiling is to run the `<
|
61
|
+
The easiest way to set up startup profiling is to run the `<mozilla-central-repo>/mobile/android/fenix/tools/setup-startup-profiling.py` script. For example:
|
62
62
|
```bash
|
63
|
-
./tools/setup-startup-profiling.py activate nightly # To activate startup profiling on nightly.
|
64
|
-
./tools/setup-startup-profiling.py deactivate beta # To deactivate startup profiling on beta.
|
63
|
+
./mobile/android/fenix/tools/setup-startup-profiling.py activate nightly # To activate startup profiling on nightly.
|
64
|
+
./mobile/android/fenix/tools/setup-startup-profiling.py deactivate beta # To deactivate startup profiling on beta.
|
65
65
|
```
|
66
66
|
|
67
67
|
If the app is uninstalled or the device is restarted, the `activate` command may need to be re-run. The script is hard-coded to use a default configuration file with default profiling arguments. If you wish to change these arguments or use a non-standard app ID, modify the script locally or read below.
|
68
68
|
|
69
|
-
If you don't want to check out [
|
69
|
+
If you don't want to check out [mozilla-central](https://hg.mozilla.org/mozilla-central/), you should be able to download [the script standalone](https://hg.mozilla.org/mozilla-central/raw-file/tip/mobile/android/fenix/tools/setup-startup-profiling.py) and execute it.
|
70
70
|
|
71
71
|
#### Manual configuration
|
72
72
|
|
@@ -78,7 +78,7 @@ The filename of the YAML file mentioned above depends on the bundle ID of your F
|
|
78
78
|
env:
|
79
79
|
MOZ_PROFILER_STARTUP: 1
|
80
80
|
MOZ_PROFILER_STARTUP_INTERVAL: 5
|
81
|
-
MOZ_PROFILER_STARTUP_FEATURES:
|
81
|
+
MOZ_PROFILER_STARTUP_FEATURES: js,stackwalk,screenshots,ipcmessages,java,processcpu,cpu
|
82
82
|
MOZ_PROFILER_STARTUP_FILTERS: GeckoMain,Compositor,Renderer,IPDL Background
|
83
83
|
```
|
84
84
|
2. Push this file to the device with `adb push org.mozilla.fenix-geckoview-config.yaml /data/local/tmp/`.
|
data/dist/docs/js/init.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
window.$docsify={name:"Firefox Profiler",auto2top:!0,loadSidebar:!0,loadNavbar:!0,subMaxLevel:2,themeColor:"#0a84ff",noCompileLinks:[".*\\.svg"]};
|
1
|
+
window.$docsify={name:"Firefox Profiler",auto2top:!0,loadSidebar:!0,loadNavbar:!0,subMaxLevel:2,themeColor:"#0a84ff",noCompileLinks:[".*\\.svg",".*\\.png"]};
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# Memory Allocations
|
2
2
|
|
3
|
-
The Firefox Profiler supports
|
3
|
+
The Firefox Profiler supports different types of memory profiling
|
4
4
|
|
5
5
|
1. Memory Track
|
6
|
-
2. Native Allocations
|
7
|
-
3. JavaScript Allocations
|
6
|
+
2. Native Allocations
|
7
|
+
3. JavaScript Allocations
|
8
|
+
4. Valgrind DHAT Profiles
|
8
9
|
|
9
10
|
## Memory Track
|
10
11
|
|
@@ -14,9 +15,9 @@ The memory track graphs overall allocation and deallocation numbers over time fo
|
|
14
15
|
|
15
16
|
The graph visualization tracks the relative memory usage over the committed range of time. It's important to note that this is not absolute memory usage. The graph and numbers will change when committing a range selection.
|
16
17
|
|
17
|
-
## Native Memory Allocations
|
18
|
+
## Native Memory Allocations
|
18
19
|
|
19
|
-
The profiler has
|
20
|
+
The profiler has support for analyzing allocations in native code (C++ and Rust) via stack sampling. These features require Nightly. To follow along you can open this [example showing DevTools opening and closing](https://perfht.ml/2LKZsfY)
|
20
21
|
|
21
22
|
The Native Allocations feature works by collecting the stack and size of memory allocations from native (C++ or Rust) code. It does not collect every allocation, but only samples a subset of them. The sampling is biased towards larger allocations and larger frees. Larger allocations are more likely show up in the profile, and will most likely be more representative of the actual memory usage. Keep in mind that since these allocations are only sampled, not all allocations will be recorded. This means that memory track (the orange graph at the top) will most likely report different numbers for memory usage.
|
22
23
|
|
@@ -63,8 +64,29 @@ This option shows all of the deallocations that were sampled. Keep in mind that
|
|
63
64
|
|
64
65
|
Some components inside of Gecko may implement their own memory management systems, and bypass the usage of system-level functions like `malloc` that are instrumented with this feature. For instance, some code could create a large buffer, and manage its own memory inside of that buffer. This feature would know about the allocation of the larger chunk of memory, but not how smaller allocations could be created inside of that buffer of memory. If this happens, information could be missing or misleading.
|
65
66
|
|
66
|
-
## JavaScript Allocations
|
67
|
+
## JavaScript Allocations
|
67
68
|
|
68
69
|
There is also a JavaScript-only allocation feature. This may be less useful as it only samples the creation of JS objects, and does not track garbage collection or frees. In fact, the Native Allocations feature is a superset of the JavaScript allocations feature, and includes the JavaScript stack information. Enable this through the `Features` section of the popup.
|
69
70
|
|
70
71
|
![A screenshot of the call tree showing JS.](images/allocation-js.png)
|
72
|
+
|
73
|
+
## Valgrind's "Dynamic Heap Analysis Tool" DHAT
|
74
|
+
|
75
|
+
When working outside of Firefox, you can use [Valgrind's DHAT tool](https://valgrind.org/docs/manual/dh-manual.html). DHAT has its own viewer, but it lacks some of the visualization and filtering capabilities of the Firefox Profiler. The converted profile will lack some of the finer details like read, write, and access information, but it does contain the amount of bytes allocated. On a Linux system (or even a Linux docker image), you can install it via:
|
76
|
+
|
77
|
+
```sh
|
78
|
+
sudo apt-get install valgrind
|
79
|
+
```
|
80
|
+
|
81
|
+
Then run your command:
|
82
|
+
|
83
|
+
```
|
84
|
+
valgrind --tool=dhat ./my-program
|
85
|
+
```
|
86
|
+
|
87
|
+
A dhat profile will be output in the same directory as your program: `dhat.out.<pid>`. Drag that file into the profiler to view it. There will be 4 tracks containing the memory information. Only the call tree and flame graph are supported.
|
88
|
+
|
89
|
+
* **Bytes at End** - Allocations that were never freed when the program ended.
|
90
|
+
* **Bytes at Global Max** - Bytes allocated when the global heap size peaked.
|
91
|
+
* **Maximum Bytes** - The maximum bytes allocated at that call site at one time.
|
92
|
+
* **Total Bytes** - The total bytes allocated over the course of the program.
|
data/dist/index.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="initial-scale=1"/><title>Firefox Profiler</title><link rel="preload" href="locales/en-US/app.ftl" as="fetch"/><link rel="icon" href="/favicon.png"><script defer="defer" src="/main.
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="initial-scale=1"/><title>Firefox Profiler</title><link rel="preload" href="locales/en-US/app.ftl" as="fetch"/><link rel="icon" href="/favicon.png"><script defer="defer" src="/main.89ba95fadf0fbee4977a.bundle.js"></script></head><body style="background-color: #363959; /* ink-70 */"><div id="root"></div><div id="root-overlay"></div></body></html>
|
data/dist/locales/be/app.ftl
CHANGED
@@ -373,8 +373,8 @@ MarkerSidebar--select-a-marker = Выберыце маркер, каб пагл
|
|
373
373
|
|
374
374
|
MarkerTable--start = Пачатак
|
375
375
|
MarkerTable--duration = Працягласць
|
376
|
-
MarkerTable--
|
377
|
-
MarkerTable--
|
376
|
+
MarkerTable--name = Назва
|
377
|
+
MarkerTable--details = Падрабязнасці
|
378
378
|
|
379
379
|
## MenuButtons
|
380
380
|
## These strings are used for the buttons at the top of the profile viewer.
|
@@ -754,7 +754,6 @@ TrackNameButton--hide-process =
|
|
754
754
|
|
755
755
|
TrackMemoryGraph--relative-memory-at-this-time = адносная памяць на гэты момант
|
756
756
|
TrackMemoryGraph--memory-range-in-graph = дыяпазон памяці ў графіку
|
757
|
-
TrackMemoryGraph--operations-since-the-previous-sample = аперацый, пачынаючы з папярэдняга ўзору
|
758
757
|
|
759
758
|
## TrackPower
|
760
759
|
## This is used to show the power used by the CPU and other chips in a computer,
|
@@ -838,6 +837,25 @@ TrackPower--tooltip-energy-carbon-used-in-preview-milliwatthour = { $value } м
|
|
838
837
|
TrackPower--tooltip-energy-carbon-used-in-preview-microwatthour = { $value } мкВт·гад ({ $carbonValue } мг CO₂e)
|
839
838
|
.label = Энергія, якая спажываецца ў бягучай выбарцы
|
840
839
|
|
840
|
+
## TrackBandwidth
|
841
|
+
## This is used to show how much data was transfered over time.
|
842
|
+
## For the strings in this group, the carbon dioxide equivalent is estimated
|
843
|
+
## from the amount of data transfered.
|
844
|
+
## The carbon dioxide equivalent represents the equivalent amount
|
845
|
+
## of CO₂ to achieve the same level of global warming potential.
|
846
|
+
|
847
|
+
# This is used in the tooltip of the bandwidth track.
|
848
|
+
# Variables:
|
849
|
+
# $value (String) - the value for the data transfer speed.
|
850
|
+
# Will contain the unit (eg. B, KB, MB)
|
851
|
+
TrackBandwidthGraph--speed = { $value } у секунду
|
852
|
+
.label = Хуткасць перадачы для гэтай выбаркі
|
853
|
+
# This is used in the tooltip of the bandwidth track.
|
854
|
+
# Variables:
|
855
|
+
# $value (String) - how many read or write operations were performed since the previous sample
|
856
|
+
TrackBandwidthGraph--read-write-operations-since-the-previous-sample = { $value }
|
857
|
+
.label = аперацый уводу/вываду з часу папярэдняй выбаркі
|
858
|
+
|
841
859
|
## TrackSearchField
|
842
860
|
## The component that is used for the search input in the track context menu.
|
843
861
|
|
data/dist/locales/de/app.ftl
CHANGED
@@ -30,6 +30,7 @@ AppHeader--github-icon =
|
|
30
30
|
## AppViewRouter
|
31
31
|
## This is used for displaying errors when loading the application.
|
32
32
|
|
33
|
+
AppViewRouter--error-from-post-message = Das Profil konnte nicht importiert werden.
|
33
34
|
AppViewRouter--error-unpublished = Das Profil von { -firefox-brand-name } konnte nicht abgerufen werden.
|
34
35
|
AppViewRouter--error-from-file = Die Datei konnte nicht gelesen oder das darin enthaltene Profil nicht verarbeitet werden.
|
35
36
|
AppViewRouter--error-local = Noch nicht implementiert.
|
@@ -169,6 +170,46 @@ CallTree--inlining-badge = (inlined)
|
|
169
170
|
## This is the sidebar component that is used in Call Tree and Flame Graph panels.
|
170
171
|
|
171
172
|
CallTreeSidebar--select-a-node = Wählen Sie einen Knoten aus, um Informationen darüber anzuzeigen.
|
173
|
+
CallTreeSidebar--call-node-details = Details zum Aufrufknoten
|
174
|
+
|
175
|
+
## CallTreeSidebar timing information
|
176
|
+
##
|
177
|
+
## Firefox Profiler stops the execution of the program every 1ms to record the
|
178
|
+
## stack. Only thing we know for sure is the stack at that point of time when
|
179
|
+
## the stack is taken. We try to estimate the time spent in each function and
|
180
|
+
## translate it to a duration. That's why we use the "traced" word here.
|
181
|
+
## There is actually no difference between "Traced running time" and "Running
|
182
|
+
## time" in the context of the profiler. We use "Traced" to emphasize that this
|
183
|
+
## is an estimation where we have more space in the UI.
|
184
|
+
##
|
185
|
+
## "Self time" is the time spent in the function itself, excluding the time spent
|
186
|
+
## in the functions it called. "Running time" is the time spent in the function
|
187
|
+
## itself, including the time spent in the functions it called.
|
188
|
+
|
189
|
+
CallTreeSidebar--traced-running-time =
|
190
|
+
.label = Nachverfolgte Laufzeit
|
191
|
+
CallTreeSidebar--traced-self-time =
|
192
|
+
.label = Nachverfolgte Eigenzeit
|
193
|
+
CallTreeSidebar--running-time =
|
194
|
+
.label = Laufzeit
|
195
|
+
CallTreeSidebar--self-time =
|
196
|
+
.label = Eigenzeit
|
197
|
+
CallTreeSidebar--running-samples =
|
198
|
+
.label = Laufende Stichproben
|
199
|
+
CallTreeSidebar--self-samples =
|
200
|
+
.label = Eigenstichproben
|
201
|
+
CallTreeSidebar--running-size =
|
202
|
+
.label = Laufgröße
|
203
|
+
CallTreeSidebar--self-size =
|
204
|
+
.label = Eigengröße
|
205
|
+
CallTreeSidebar--categories = Kategorien
|
206
|
+
CallTreeSidebar--implementation = Implementierung
|
207
|
+
CallTreeSidebar--running-milliseconds = Laufende Millisekunden
|
208
|
+
CallTreeSidebar--running-sample-count = Anzahl laufende Stichproben
|
209
|
+
CallTreeSidebar--running-bytes = Laufende Bytes
|
210
|
+
CallTreeSidebar--self-milliseconds = Eigene Millisekunden
|
211
|
+
CallTreeSidebar--self-sample-count = Anzahl Eigenstichproben
|
212
|
+
CallTreeSidebar--self-bytes = Eigene Bytes
|
172
213
|
|
173
214
|
## CompareHome
|
174
215
|
## This is used in the page to compare two profiles.
|
@@ -278,6 +319,15 @@ Home--load-files-from-other-tools2 =
|
|
278
319
|
<perf>Linux perf</perf>, <simpleperf>Android SimplePerf</simpleperf>, die
|
279
320
|
Chrome Performance Panel, <androidstudio>Android Studio</androidstudio> oder
|
280
321
|
eine Datei im <dhat>dhat-Format</dhat> oder <traceevent>Googles Trace-Event-Format</traceevent>. <write>Erfahren Sie, wie Sie Ihren eigenen Importeur schreiben</write>.
|
322
|
+
Home--install-chrome-extension = Installieren Sie die Chrome-Erweiterung
|
323
|
+
Home--chrome-extension-instructions =
|
324
|
+
Verwenden Sie die <a>{ -profiler-brand-name }-Erweiterung für Chrome</a>,
|
325
|
+
um Leistungsprofile in Chrome zu erfassen und im { -profiler-brand-name }
|
326
|
+
zu analysieren. Installieren Sie die Erweiterung aus dem Chrome Web Store.
|
327
|
+
Home--chrome-extension-recording-instructions =
|
328
|
+
Verwenden Sie nach der Installation das Symbolleisten-Symbol der Erweiterung
|
329
|
+
oder die Tastenkombinationen zum Starten und Stoppen der Profilerstellung. Sie können auch
|
330
|
+
Profile exportieren und hier zur detaillierten Analyse laden.
|
281
331
|
|
282
332
|
## IdleSearchField
|
283
333
|
## The component that is used for all the search inputs in the application.
|
@@ -371,8 +421,8 @@ MarkerSidebar--select-a-marker = Wählen Sie eine Markierung aus, um Information
|
|
371
421
|
|
372
422
|
MarkerTable--start = Beginn
|
373
423
|
MarkerTable--duration = Dauer
|
374
|
-
MarkerTable--
|
375
|
-
MarkerTable--
|
424
|
+
MarkerTable--name = Name
|
425
|
+
MarkerTable--details = Details
|
376
426
|
|
377
427
|
## MenuButtons
|
378
428
|
## These strings are used for the buttons at the top of the profile viewer.
|
@@ -611,6 +661,7 @@ ProfileFilterNavigator--full-range-with-duration = Vollständiger Zeitraum ({ $f
|
|
611
661
|
|
612
662
|
## Profile Loader Animation
|
613
663
|
|
664
|
+
ProfileLoaderAnimation--loading-from-post-message = Das Profil wird importiert und verarbeitet…
|
614
665
|
ProfileLoaderAnimation--loading-unpublished = Das Profil wird direkt von { -firefox-brand-name } importiert…
|
615
666
|
ProfileLoaderAnimation--loading-from-file = Datei lesen und Profil verarbeiten…
|
616
667
|
ProfileLoaderAnimation--loading-local = Noch nicht implementiert.
|
@@ -686,6 +737,13 @@ TabBar--marker-table-tab = Markierungstabelle
|
|
686
737
|
TabBar--network-tab = Netzwerk
|
687
738
|
TabBar--js-tracer-tab = JS-Aufzeichnung
|
688
739
|
|
740
|
+
## TabSelectorMenu
|
741
|
+
## This component is a context menu that's opened when you click on the root
|
742
|
+
## range at the top left corner for profiler analysis view. It's used to switch
|
743
|
+
## between tabs that were captured in the profile.
|
744
|
+
|
745
|
+
TabSelectorMenu--all-tabs-and-windows = Alle Tabs und Fenster
|
746
|
+
|
689
747
|
## TrackContextMenu
|
690
748
|
## This is used as a context menu for timeline to organize the tracks in the
|
691
749
|
## analysis UI.
|
@@ -702,6 +760,10 @@ TrackContextMenu--hide-other-screenshots-tracks = Andere Screenshots-Tracks ausb
|
|
702
760
|
TrackContextMenu--hide-track = „{ $trackName }“ verbergen
|
703
761
|
TrackContextMenu--show-all-tracks = Alle Tracks anzeigen
|
704
762
|
TrackContextMenu--show-local-tracks-in-process = Alle Tracks in diesem Prozess anzeigen
|
763
|
+
# This is used as the context menu item to hide all tracks of the selected track's type.
|
764
|
+
# Variables:
|
765
|
+
# $type (String) - Name of the type of selected track to hide.
|
766
|
+
TrackContextMenu--hide-all-tracks-by-selected-track-type = Alle Spuren vom Typ „{ $type }“ ausblenden
|
705
767
|
# This is used in the tracks context menu as a button to show all the tracks
|
706
768
|
# that match the search filter.
|
707
769
|
TrackContextMenu--show-all-matching-tracks = Alle passenden Tracks anzeigen
|
@@ -727,7 +789,7 @@ TrackNameButton--hide-process =
|
|
727
789
|
|
728
790
|
TrackMemoryGraph--relative-memory-at-this-time = Relativer Speicherverbrauch zu diesem Zeitpunkt
|
729
791
|
TrackMemoryGraph--memory-range-in-graph = Speicherbereich im Diagramm
|
730
|
-
TrackMemoryGraph--
|
792
|
+
TrackMemoryGraph--allocations-and-deallocations-since-the-previous-sample = Allokationen und Aufhebungen von Allokationen seit der vorherigen Stichprobe
|
731
793
|
|
732
794
|
## TrackPower
|
733
795
|
## This is used to show the power used by the CPU and other chips in a computer,
|
@@ -754,6 +816,21 @@ TrackPower--tooltip-power-watt = { $value } W
|
|
754
816
|
# $value (String) - the power value at this location
|
755
817
|
TrackPower--tooltip-power-milliwatt = { $value } mW
|
756
818
|
.label = Leistung
|
819
|
+
# This is used in the tooltip when the power value uses the kilowatt unit.
|
820
|
+
# Variables:
|
821
|
+
# $value (String) - the power value at this location
|
822
|
+
TrackPower--tooltip-average-power-kilowatt = { $value } kW
|
823
|
+
.label = Durchschnittliche Leistung in der aktuellen Auswahl
|
824
|
+
# This is used in the tooltip when the power value uses the watt unit.
|
825
|
+
# Variables:
|
826
|
+
# $value (String) - the power value at this location
|
827
|
+
TrackPower--tooltip-average-power-watt = { $value } W
|
828
|
+
.label = Durchschnittliche Leistung in der aktuellen Auswahl
|
829
|
+
# This is used in the tooltip when the instant power value uses the milliwatt unit.
|
830
|
+
# Variables:
|
831
|
+
# $value (String) - the power value at this location
|
832
|
+
TrackPower--tooltip-average-power-milliwatt = { $value } mW
|
833
|
+
.label = Durchschnittliche Leistung in der aktuellen Auswahl
|
757
834
|
# This is used in the tooltip when the energy used in the current range uses the
|
758
835
|
# kilowatt-hour unit.
|
759
836
|
# Variables:
|
@@ -811,6 +888,46 @@ TrackPower--tooltip-energy-carbon-used-in-preview-milliwatthour = { $value } mWh
|
|
811
888
|
TrackPower--tooltip-energy-carbon-used-in-preview-microwatthour = { $value } µWh ({ $carbonValue } mg CO₂e)
|
812
889
|
.label = In der aktuellen Auswahl verwendete Energie
|
813
890
|
|
891
|
+
## TrackBandwidth
|
892
|
+
## This is used to show how much data was transfered over time.
|
893
|
+
## For the strings in this group, the carbon dioxide equivalent is estimated
|
894
|
+
## from the amount of data transfered.
|
895
|
+
## The carbon dioxide equivalent represents the equivalent amount
|
896
|
+
## of CO₂ to achieve the same level of global warming potential.
|
897
|
+
|
898
|
+
# This is used in the tooltip of the bandwidth track.
|
899
|
+
# Variables:
|
900
|
+
# $value (String) - the value for the data transfer speed.
|
901
|
+
# Will contain the unit (eg. B, KB, MB)
|
902
|
+
TrackBandwidthGraph--speed = { $value } pro Sekunde
|
903
|
+
.label = Übertragungsgeschwindigkeit für diese Teilmenge
|
904
|
+
# This is used in the tooltip of the bandwidth track.
|
905
|
+
# Variables:
|
906
|
+
# $value (String) - how many read or write operations were performed since the previous sample
|
907
|
+
TrackBandwidthGraph--read-write-operations-since-the-previous-sample = { $value }
|
908
|
+
.label = Lese-/Schreiboperationen seit der vorherigen Teilmenge
|
909
|
+
# This is used in the tooltip of the bandwidth track.
|
910
|
+
# Variables:
|
911
|
+
# $value (String) - the total of transfered data until the hovered time.
|
912
|
+
# Will contain the unit (eg. B, KB, MB)
|
913
|
+
# $carbonValue (string) - the carbon dioxide equivalent (CO₂e) value in grams
|
914
|
+
TrackBandwidthGraph--cumulative-bandwidth-at-this-time = { $value } ({ $carbonValue } g CO₂e)
|
915
|
+
.label = Bislang übertragene Daten
|
916
|
+
# This is used in the tooltip of the bandwidth track.
|
917
|
+
# Variables:
|
918
|
+
# $value (String) - the total of transfered data during the visible time range.
|
919
|
+
# Will contain the unit (eg. B, KB, MB)
|
920
|
+
# $carbonValue (string) - the carbon dioxide equivalent (CO₂e) value in grams
|
921
|
+
TrackBandwidthGraph--total-bandwidth-in-graph = { $value } ({ $carbonValue } g CO₂e)
|
922
|
+
.label = Im sichtbaren Bereich übertragene Daten
|
923
|
+
# This is used in the tooltip of the bandwidth track when a range is selected.
|
924
|
+
# Variables:
|
925
|
+
# $value (String) - the total of transfered data during the selected time range.
|
926
|
+
# Will contain the unit (eg. B, KB, MB)
|
927
|
+
# $carbonValue (string) - the carbon dioxide equivalent (CO₂e) value in grams
|
928
|
+
TrackBandwidthGraph--total-bandwidth-in-range = { $value } ({ $carbonValue } g CO₂e)
|
929
|
+
.label = In der aktuellen Auswahl übertragene Daten
|
930
|
+
|
814
931
|
## TrackSearchField
|
815
932
|
## The component that is used for the search input in the track context menu.
|
816
933
|
|