Zephyr Lykos
ae8a12fa27
impr: Show external frames when using std::stacktrace backend ( #2302 )
...
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->
### Problem description
`std::stacktrace` backend in `hex::trace` does not show frames for
external libraries.
### Implementation description
If `dlfcn.h` is available, use `dladdr` to retrieve external symbol
information.
### Screenshots
Before:
```
[02:33:46] [FATAL] [main | Main] Printing stacktrace using implementation 'std::stacktrace'
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/lib/trace/source/stacktrace.cpp:34) | hex::trace::getStackTrace()
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/crash_handlers.cpp:75) | printStackTrace
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/crash_handlers.cpp:125) | hex::crash::handleCrash(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/crash_handlers.cpp:211) | operator()
[02:33:46] [FATAL] [main | Main] () | ??
[02:33:46] [FATAL] [main | Main] () | ??
[02:33:46] [FATAL] [main | Main] () | ??
[02:33:46] [FATAL] [main | Main] () | ??
[02:33:46] [FATAL] [main | Main] () | ??
[02:33:46] [FATAL] [main | Main] () | ??
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/lib/third_party/imgui/backend/source/imgui_impl_glfw.cpp:844) | ImGui_ImplGlfw_UpdateMouseData
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/window/window.cpp:353) | hex::Window::frameBegin()
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/window/window.cpp:241) | hex::Window::fullFrame()
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/window/window.cpp:297) | hex::Window::loop()
[02:33:46] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/init/run/native.cpp:43) | hex::init::runImHex()
[02:33:46] [FATAL] [main | Main] () | ??
[02:33:46] [FATAL] [main | Main] () | ??
[02:33:47] [FATAL] [main | Main] () | ??
[02:33:47] [FATAL] [main | Main] () | ??
```
After:
```
[02:30:19] [FATAL] [main | Main] Printing stacktrace using implementation 'std::stacktrace'
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/lib/trace/source/stacktrace.cpp:41) | hex::trace::getStackTrace()
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/crash_handlers.cpp:75) | printStackTrace
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/crash_handlers.cpp:125) | hex::crash::handleCrash(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/crash_handlers.cpp:211) | operator()
[02:30:19] [FATAL] [main | Main] (/lib64/libc.so.6) | libc.so.6+0x00019bef
[02:30:19] [FATAL] [main | Main] (/lib64/libc.so.6) | libc.so.6+0x00073c2c
[02:30:19] [FATAL] [main | Main] (/lib64/libc.so.6) | gsignal+0x1d
[02:30:19] [FATAL] [main | Main] (/lib64/libc.so.6) | abort+0x25
[02:30:19] [FATAL] [main | Main] (/lib64/libc.so.6) | libc.so.6+0x00001638
[02:30:19] [FATAL] [main | Main] (/lib64/libglfw.so.3) | libglfw.so.3+0x00002275
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/lib/third_party/imgui/backend/source/imgui_impl_glfw.cpp:844) | ImGui_ImplGlfw_UpdateMouseData
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/window/window.cpp:353) | hex::Window::frameBegin()
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/window/window.cpp:241) | hex::Window::fullFrame()
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/window/window.cpp:297) | hex::Window::loop()
[02:30:19] [FATAL] [main | Main] (/home/mochaa/ghq/github.com/WerWolv/ImHex/main/gui/source/init/run/native.cpp:43) | hex::init::runImHex()
[02:30:19] [FATAL] [main | Main] (/lib64/libc.so.6) | libc.so.6+0x000035b4
[02:30:19] [FATAL] [main | Main] (/lib64/libc.so.6) | __libc_start_main+0x87
[02:30:19] [FATAL] [main | Main] (./build/imhex) | imhex+0x0000cd94
[02:30:19] [FATAL] [main | Main] (??) | +0xffffffffffffffff
```
### Additional things
None
2025-08-09 19:46:01 +02:00
WerWolv
d925c8216d
impr: Allow ImHex to be used without subpixel rendering on Windows if only OpenGL 3 is available
2025-08-09 19:13:45 +02:00
WerWolv
e6f46747b6
fix: Add missing Updates path to About screen
2025-08-09 17:59:01 +02:00
WerWolv
411e971ba7
impr: Properly delete old update files
2025-08-09 14:28:48 +02:00
WerWolv
dbc5819bc4
fix: Handling of unchanged shortcut keys
2025-08-09 14:23:36 +02:00
WerWolv
fd2d50508b
fix: Update nightly update detection logic to work with release changes
2025-08-09 12:10:25 +02:00
paxcut
14ee688629
fix: fixes for issues #2388 and #2389 . ( #2392 )
...
Tab insertion was not being recorded for undoing and the shift-backspace
shortcut did not exist. This PR addresses both issues directly.
2025-08-09 03:03:08 -07:00
WerWolv
cd5b16cce5
fix: Another missing include
2025-08-09 10:34:09 +02:00
WerWolv
cc1ac95af6
fix: Missing include
2025-08-09 10:23:35 +02:00
WerWolv
59c6d3090b
fix: Clang doesn't support std::chrono::parse() yet
2025-08-08 23:32:07 +02:00
WerWolv
ce66f3a98a
build: Fix remaining missing includes
2025-08-08 22:56:21 +02:00
WerWolv
ad87f005fe
feat: Added command line palette option to open/focus views
2025-08-08 22:36:46 +02:00
paxcut
df1e97af0a
improv: further reformatting of text editor in an effort to bring it into the ui plugin. ( #2385 )
...
Added the ui namespace and broke the main rendering function into a set
of smaller functions. Reorganized the header code separating functions
into rough groups that eventually will be in separate files.
2025-08-08 12:47:52 -07:00
WerWolv
82ceb2e11f
impr: Better auto updater, added support for updating nightlies
2025-08-08 21:25:52 +02:00
WerWolv
725462b222
fix: Diffing task not being properly cancelable
...
Fixes #2383
2025-08-08 17:47:15 +02:00
WerWolv
d39d33de32
fix: Inconsistent look of welcome screen hyperlinks
2025-08-07 17:09:07 +02:00
WerWolv
7c07f70afd
fix: AlmaLinux doesn't seem to support fmt::println yet
2025-08-07 17:08:38 +02:00
WerWolv
de67d5942b
fix: Broken formatting in unit tests
2025-08-07 08:26:35 +02:00
WerWolv
f358069cc1
feat: Allow plugins to add their own welcome screen quick settings, improve UI
2025-08-06 22:51:59 +02:00
aoqia194
cf87294a8c
feat: Add EventViewClosed event ( #2377 )
...
Where one door opens, another one closes (said someone) and in this
situation i mean view, because there's no event for closing a view only
opening one, so please add this :c
### Problem description
Simply adds an **EventViewClosed** to match the pre-existing
**EventViewOpened**. Also fixes the issue where EventViewOpened wouldn't
trigger for windows that were popups (even if they are technically a
View.
### Implementation description
I mirrored the current functionality of EventViewOpened for closing.
---------
Co-authored-by: paxcut <53811119+paxcut@users.noreply.github.com >
2025-08-06 22:22:46 +02:00
WerWolv
abe13d9ff9
impr: Make reset button of color settings widgets look nicer
2025-08-06 22:20:03 +02:00
WerWolv
064b21a264
impr: Added icons to providers, improved the quick settings
2025-08-06 21:37:57 +02:00
WerWolv
5be6297bac
fix: Few more build issues
2025-08-06 20:49:23 +02:00
WerWolv
9cff9043ee
impr: Remove hex::format, improve format and logging type safety
2025-08-06 20:02:23 +02:00
paxcut
d429424f67
improv: refactor text editor to follow imhex style. ( #2382 )
...
Also fixes two bugs:
1) error messages not staying visible
2) uncaught exception when struct name is duplicated.
A lot of the code using coordinates for start and end has been moved to
use Selections instead. Created more string manipulation code that uses
utf8 indices aka Coordinates directly. This makes implementing editing
functions easier by not having to go back and forth from string indices
to char indices and back. Currently, the substring, erase and []
operator support coordinates and str indices.
2025-08-06 01:01:07 -07:00
WerWolv
750f91dbbc
fix: Builtin plugin detection on Web build
2025-08-06 00:12:37 +02:00
WerWolv
c0ee243d64
fix: Various build issues
2025-08-06 00:03:18 +02:00
WerWolv
263c5f6830
impr: Added icons to all tools
2025-08-05 23:32:27 +02:00
WerWolv
3cf7622707
impr: Make font size a multiplicative value
2025-08-05 22:19:43 +02:00
WerWolv
baebfe96ba
impr: Make banners easier to read
2025-08-05 22:19:04 +02:00
WerWolv
5b06702dee
feat: Allow plugins to be dynamically turned on and off
2025-08-05 22:16:39 +02:00
WerWolv
388f5354a1
fix: ImHex being displayed as "Main" in some task managers on Linux
2025-08-05 17:57:26 +02:00
WerWolv
c3cd4edbf9
impr: Various small ssh provider improvements
2025-08-05 17:56:10 +02:00
paxcut
b9c36cfd2f
feat: added paren and quote autocompletion. ( #2381 )
...
Also fixed tab insertion on selections.
2025-08-04 17:28:38 -07:00
WerWolv
3d01b78ba0
build: Allow building and running on 32 bit Windows
2025-08-03 17:55:32 +02:00
WerWolv
1a8e09d549
patterns: Updated pattern language
2025-08-03 13:47:19 +02:00
WerWolv
2440acda07
impr: Small performance improvements
2025-08-02 17:30:58 +02:00
paxcut
a9eb7b2d25
fix: fixed auto save projects not being done after the first one. ( #2366 )
...
Currently setting the time interval to auto save the project has no
effect other than creating one initial save if the input file is
unsaved. When a file is created and not saved it remains in a dirty
state which prevented setting the state of the autosaved project to
needing to be saved. Fixed by decoupling the state of the provider from
the state of the autosave. When a provider is detected as being dirty it
always makes the autosave as being needed once the time interval has
elapsed.
feat: Implemented the menus on the main menu bar that will be available
when the text editor has focus. It allows you to load and save patterns
using open and save and will tack changes if files on disk are modified
externally. It also only opens the file chooser the first time you save
a pattern file and subsequent changes save to the same file.
If you want to save into another file and have the new file be tracked
you can use Save As. Finally, export doesn't track the file on disk at
all. this feature uses the same changes tracker class used elsewhere in
imHex.
fix: Changed the defaults of various shortcuts that were using Alt + a
key to avoid possible problems with some keyboards. Shouldn't affect end
users as their shortcuts are loaded from internal file but those who
complain about the Alt key misbehaving will be asked to reset the keys
to the new defaults. In addition, all globally accessible shortcuts were
added the Allow while typing flag so that they can be used in any field
that accepts text.
New menu entries were added for debugging to make the pattern editor and
the hex editor menus more like each other.
Finally, the call to RegisterMainMenuEntries() when initializing views
was moved to occur after the call to registerViews() so that menus are
not repeated when set for different views.
2025-08-02 01:29:34 -07:00
WerWolv
f73866b86e
impr: Speed up initial resource loading and event handling slightly
2025-08-02 01:14:00 +02:00
WerWolv
1e18abc598
patterns: Updated pattern language
2025-08-01 01:08:13 +02:00
WerWolv
44f12587f3
impr: Cleanup and simplify subpixel rendering patches
2025-07-31 20:33:21 +02:00
WerWolv
fd8bdbdc90
fix: Icons being too big for regular text
2025-07-31 20:32:59 +02:00
WerWolv
9557041c3a
fix: Open file in explorer not working on Windows
2025-07-31 00:24:54 +02:00
WerWolv
280dea23d0
fix: Font point calculation not respecting framebuffer scale
2025-07-30 22:33:16 +02:00
WerWolv
6fcc3e8cb3
build: Move all demangler uses into the trace library
2025-07-30 20:57:53 +02:00
WerWolv
a31760eecb
patterns: Updated pattern language
2025-07-30 17:43:08 +02:00
WerWolv
4c89a79dc3
feat: Added full-screen views for use with subcommands in the future
2025-07-30 17:42:56 +02:00
WerWolv
2c3d8d4c0b
fix: CppCheck issues
2025-07-30 17:41:45 +02:00
WerWolv
e71e026da0
patterns: Updated pattern language
2025-07-29 21:32:16 +02:00
WerWolv
46b13b6606
impr: Nicer font registering API
2025-07-28 18:02:33 +02:00