Comments (10)
The current API exposed by this crate was only provided for the purpose of testing ddbug itself.
I think it makes a lot of sense to expose more APIs. Part of my motivation in writing ddbug was to get a some experience in what is useful for those APIs. The current APIs are probably a bit too focused on the needs of ddbug, but they can evolve. In the short term it's probably easier if they remain in this crate (or at least in this git repo as part of a workspace), but long term I'd be fine with moving them to a separate crate.
The DWARF support suffers from needing to load too much into memory, and my recent focus has been on reducing this, but there's still more to go. There's probably a few other issues that I don't recall right now.
The PDB support is currently quite poor, and I've actually disabled it for now while I focus on the DWARF. Part of the problem is that the pdb crate is incomplete.
Is this something you want to work on doing? Or do you want me to make a start on it, and then we can fixes issues as they arise? I can't promise when I'll get time to do it though.
from ddbug.
The PDB support is currently quite poor, and I've actually disabled it for now while I focus on the DWARF.
I didn't know about this though, but still, I guess it's okay for a start?
The DWARF support suffers from needing to load too much into memory, and my recent focus has been on reducing this, but there's still more to go.
Same - I suppose this can be split into functions instead of fields so that it could be retrieved on-demand (or maybe even lazily stored inside of the structure), but having a nice ground helps.
Or do you want me to make a start on it, and then we can fixes issues as they arise?
As mentioned above, I think just exposing what is available now would be a good start as I've actually started reimplementing something very similar for my own purposes, but then realised that ddbug
must have solves most of these issues already, and indeed, found a rich hidden API :)
I don't know how much I would be able to help as this is for yet another side-project I have in the back of my head, and I'm already feeling guilty for all the OSS projects I don't have much time to contribute to anymore, so don't want to make promises, but would be certainly happy to help whenever possible :)
from ddbug.
I didn't know about this though, but still, I guess it's okay for a start?
The PDB support currently only has type information, not symbol information. Depends what you need.
Same - I suppose this can be split into functions instead of fields so that it could be retrieved on-demand (or maybe even lazily stored inside of the structure), but having a nice ground helps.
The idea is that we parse as little as possible initially, and instead refer to functions/types etc by their DIE offset, and then parse the rest of the fields when needed. I think this is mostly done, but it is still using too much memory for the file I was testing on (libxul.so). Not sure if there is more that can be done while keeping all the functionality. It'll be a decent starting point for normal sized files anyway.
from ddbug.
The PDB support currently only has type information, not symbol information. Depends what you need.
For start I would want function and type information, you're saying that former is not available, right?
and then parse the rest of the fields when needed. I think this is mostly done, but it is still using too much memory
Ah. Libs I'm interested in are usually much smaller, so initially this shouldn't be an issue, but still interesting to tackle in future.
from ddbug.
I've split out a ddbug_parser
crate (still in this repo). See if that fits your needs, and let me know any issues you find. I'll probably do a few more cleanups in the coming days. I've avoided the panopticon dependency in ddbug_parser
, so I'll be able to publish it to crates.io once things settle.
For start I would want function and type information, you're saying that former is not available, right?
I think it only had public symbols for functions. It's been a while since I've checked and it's currently disabled. I'll have a look at enabling it again sometime.
from ddbug.
Sorry, I'll need few more days to get back to this and try that crate out. Thanks for extracting the APIs though, much appreciated!
from ddbug.
Going to close this as done. Feel free to reopen or create new issues if needed.
from ddbug.
It looks like ddbug_parser hasn't been updated in a while, and trying to use version from Github results in various errors due to relative crate paths in Cargo.toml.
Could you please publish a new version?
from ddbug.
That's going to require a moria update first. I've hacked it locally (hence the relative crate paths). Looks like moria was never published at all, and someone else has squatted the name on crates.io. I'm not really interested in maintaining moria. I'm happy to merge any patches that get this working for you.
from ddbug.
I deleted the moria support and published to crates.io.
from ddbug.
Related Issues (20)
- Better handling of closures
- Handle large files
- Merge codegen units
- Make it easier to determine panic locations HOT 1
- Release new version
- cargo install ddbug fails right now HOT 3
- differentiate reconstructed symbol table based entries HOT 6
- add color HOT 1
- Export to other formats? HOT 3
- Expose inherited types HOT 1
- cargo install fails HOT 2
- Expose base type encodings HOT 5
- Can `ddbug_parser::File::parse` return a `ddbug::File` object? HOT 4
- Type `Symbol` is public, but there's no way to get one HOT 1
- Consider switching from memmap crate dependency HOT 1
- functions with multiple address ranges HOT 4
- two dimens array & bit size error HOT 5
- union offset is not correct HOT 1
- Add a query interface? HOT 2
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 ddbug.