Comments (11)
A complex but definitive solution to artifact size would be to store the debug info of release versions ourselves instead of bundling it in artifacts, and make ImHex upload stacktraces with code offsets to our server, where we could map them to files/lines again.
from imhex.
Ohh, I never knew symbol servers existing. That could be a way to solve the problem indeed. But I don't plan to do it right now. It someone wants to build a PoC, please do so. I'm imagining something like a function in ImHex that calls the symbol server when crashing, or an implementation in our the API web server when they receive raw "stacktraces" without symbols from ImHex instances
Some links that seem useful:
https://stackoverflow.com/a/35556262
https://docs.sentry.io/platforms/apple/data-management/debug-files/symbol-servers/
https://wiki.archlinux.org/title/Debuginfod (used by ArchLinux for downloading debug info for the libraries in pacman)
I think the pdbs are needed by the stack tracer implementation used , so that the debuggers servers are not something that can be used here.
I'm sure this can be worked around
from imhex.
LTO seems to influence the ccache cache sizes a lot
the ArchLinux ccache cache is 150MB with LTO, and 24MB without
See https://gist.github.com/iTrooz/740f00f0935e365534f5a76dab0e7738 to measure section sizes for ELF
from imhex.
building in Release mode instead of RelWithDebInfo helps a lot with artifacts size. For example, Ubuntu 22.04 DEB went from 132MB to 16.2MB. Windows Installer went from 217MB to 24.2MB
More information: https://github.com/iTrooz/ImHex/actions/runs/9231528139 and https://github.com/iTrooz/ImHex/actions/runs/9231536431
from imhex.
using -gz=zlib
(or fallback on -gz
doesn't seem to improve cache sizes (Checked on Ubuntu 22.04 and ArchLinux builds)
Artifacts sizes do not improve either. In fact, AppImage seems to have gone from 141MB to 162MB
Windows and MacOS do not support this option.
Note that actual ELF files produced drastically reduce in size (e.g. 140.6MiB to 56.4MiB for libimhex for Ubuntu 22.04). The reason we are not observing changes in artifacts is because packages formats (e.g. .deb, .rpm, .tar.zst..) are already compressed.
NOTE: This means that this optimisation would still be useful once the package installed
More information: https://github.com/iTrooz/ImHex/actions/runs/9231528139 https://github.com/iTrooz/ImHex/actions/runs/9235290159
from imhex.
Some software provides separate pdb file downloads for debugging, is this approch possible for ImHex?
from imhex.
Probably, but your approach is missing some details. Who would download and use these separate debugging files ?
I offer an answer to this in my last comment
from imhex.
Who would download and use these separate debugging files ?
AFAIK, WinDbg, "who" keep downloads symbol files automatically, until the disk is filled
from imhex.
If you have a source please share it, but I'm doubtful it would do that, because its not its purpose. WinDbg is a debugger, why would it even be installed on a user machine, and why would it manage storage
from imhex.
I think Crystal-Rain Slide means that debuggers can have symbol servers defined and when you try to debug code it downloads pdbs for libraries and things you may need. Those are microsoft servers though but you can use any server like a folder or an http address. I think the pdbs are needed by the stack tracer implementation used , so that the debuggers servers are not something that can be used here.
from imhex.
I don't know much about how the process of creating useful stack traces, but if symbol servers can be used for them then I suppose it would be the natural choice. symbol servers are not exclusive to windows, gdb also supports them and there may be linux servers that can be used as well. Im not 100% sure but i think it is likely.
from imhex.
Related Issues (20)
- [Bug] Can not remove a patch
- [Bug] imhex run exit
- [Bug] Slice buffer node range excludes "To" index
- [Feature] Support for two's complement encoded integers in the Data Processor
- [Feature] Display pattern data even on failure (best effort) HOT 1
- [Bug] Requested file dialog returned an error: D-Bus file dialog interaction was ended abruptly with response code 2. HOT 1
- [Feature] vertical selection
- [Bug] Unable to enter hexadecimal as alignment HOT 1
- [Bug] ImHex crach when try to open a file HOT 2
- [Feature] base58 support HOT 1
- [Feature] Add support zstd stream data to `hex::dec::zstd_decompress`
- [Bug] Build fails with cmake 3.30+ HOT 4
- [Feature] Export section data as Pattern Data HOT 6
- [Bug] Parser error on placement of anonymous variable inside struct HOT 4
- [Feature] Pasting text in hex editor
- linker error when compiling from source -- seems to not be -lopengl32 ? HOT 2
- [Bug] Scaling on Windows not implemented properly multiple scales and 4k. HOT 1
- Data Processor doesn't support Float value calculations.
- can I use imhex to see the export libraries of a dll? HOT 2
- [Bug] Integer to Buffer conversion not working HOT 4
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 imhex.