Comments (6)
two possibilities jump to mind:
- your application hasn't finished running: I believe the trace file is only generated when the application terminates. If you want to profile an application as it is running, you'll need to use Instruments.app directly to attach to the relevant process
- your application finished execution so quickly that no samples were captured: I think this produces a different error message, but this might vary between versions, I'm not sure
If it isn't any of those things then let me know and we can start debugging. :)
from cargo-instruments.
@cmyr happens to me too, my application is a Web API, when I kill it after doing 10K requests, I get this error. Could it be that stopping the API doesn't trigger gracefully creating the profiling file?
from cargo-instruments.
I think the fix here is for cargo-instruments
to recognise when it's being terminated from the CTRL+C
signal, and to finish writing the traces file. Without that you can't really use it for instrumenting long running processes that don't have a regular shutdown like a web server.
from cargo-instruments.
The problem is that we aren't responsible for writing traces; that's up to xctrace
, and so we have no control over what it does in response to SIGINT
.
The only thing cargo-instruments can offer here is the --time-limit
command, which lets you specify a number of seconds to run the app before termination.
If you want to attach to a running application, profile it, and then stop profiling, you'll need to dig into the xctrace
command line utility (or just Instruments.app
)
from cargo-instruments.
The problem is that we aren't responsible for writing traces; that's up to xctrace, and so we have no control over what it does in response to SIGINT.
Right but you're the parent process, that's responsible for running both the app and xctrace. You could spawn those into different process groups, and then when cargo-instruments
get a SIGINT
, you forward that to the app to terminate it, but not to the xctrace process. Letting it finish writing traces before you finish.
from cargo-instruments.
That's an interesting idea, but we don't actually spawn the target process, we just invoke xctrace
with the --launch
option, and it executes the target. We could change this in theory and do the launching ourselves before attaching xctrace
but that's a fairly significant change that I don't really have the appetite for at the moment.
from cargo-instruments.
Related Issues (20)
- failed to get `chrono` as a dependency of package ... HOT 5
- Forces a full update the crates.io index HOT 4
- Many Instrument video links in Readme don't work HOT 2
- Make a new release HOT 2
- Mention feature `vendored-openssl` in installation instructions HOT 1
- Fails to link libstd on macOS HOT 1
- Support --manifest-path? HOT 2
- Failed to execute loader thread for liboainject.dylib HOT 8
- xcrun: error: unable to find utility "xctrace" HOT 7
- cargo instruments hanging after OS upgrade HOT 2
- cargo-instruments fails with "Failed instruments errored:" HOT 4
- Cannot run benches in the main target, examples, or libs HOT 2
- Can't seem to find xctrace HOT 2
- Passing ARGS which begin with `--`? HOT 1
- source viewer problem HOT 3
- Support on Apple Silicon
- Support integration test targets
- `NSInvalidArgumentException`: `[__NSCFString stringByStandardizingPath]: unrecognized selector sent to instance` HOT 1
- The document “xyz.trace” could not be opened. Document Missing Template Error
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cargo-instruments.