epasveer / seer

Seer - a gui frontend to gdb
GNU General Public License v3.0
2.14k stars 69 forks source link

too short call stack for main thread on interrupted process #223

Closed Gussak closed 2 months ago

Gussak commented 9 months ago

many times I am getting a short calls stack list for the main thread, like a single call (or 2) in the stack other times I get 11 or 12 levels in the frames but it surely has much more
so I end up unable to navigate in the call stack back to the program I am trying to debug

any idea how to fix it?

Obs.: to compile the app I use: -ggdb3 -O0 -fno-omit-frame-pointer -lboost_stacktrace_backtrace

Btw: . I am debugging my Arx Libertatis fork, so I am having the problems with it. . I am using ubuntu 22.04 . The logs from arx have no color on seergdb console, I will see if I can patch the console window or at least allow the log to be dumped on the terminal that ran seergdb. Also to let it accept iso-8859-15 encoding.

version: seergdb 2.4beta (Qt5.15.3)

epasveer commented 8 months ago

Hi @Gussak . Thanks for trying Seer.

Obs.: to compile the app I use: -ggdb3 -O0 -fno-omit-frame-pointer -lboost_stacktrace_backtrace

I'll try to create a test with this info to duplicate the problem.

The logs from arx have no color on seergdb console,

Correct. The Seer console doesn't support color escape codes. My initial choice of a console was a basic one. However, I do realize it has limitations. I'm still looking for a better one that supports more features. libqterminal has potential.

I am debugging my Arx Libertatis fork

I see your fork of that project. If need be, I might need to compile it to duplicate the stack list problem.

https://github.com/Gussak/ArxLibertatis

Gussak commented 8 months ago

Solved. After DW_FORM_strp error happens, I just need to click in the call stack entry of the other thread that is wrongly shown. It imediately loads the correct call stack of the main thread!

below I was adding details if it can help tho.


I'll try to create a test with this info to duplicate the problem.

Sorry.. I was too tired and couldnt provide the details.

difficulties I am experiencing (may be I just need to better configure things?)
Obs.: but now I think all problems below may be related to DW_FORM_strp error, I will search about it.

errors and do not show the stack trace the thread 6 was clicked before, and the call stack is being shown in the list
but when I click at thread 1, this error happens on the seergdb log: "DW_FORM_strp pointing outside of .debug_str section in module ...arx" (I had to type as I couldnt copy it)
and the tread 1 callstack is not shown, so the thread 6 callstack remains there.

this seems to happen because of a missing source file
this seems to happen because of a missing source file pthread_create.c, so further calls end unrecognized? all the "??"

as soon I hit interrupt while the intro cinematic is playing as soon I hit interrupt while the intro cinematic is playing
the thread 1 has no callstack at all, but I guess is because of DW_FORM_strp error

may be all problems are related to DW_FORM_strp

Correct. The Seer console doesn't support color escape codes. My initial choice of a console was a basic one. However, I do realize it has limitations. I'm still looking for a better one that supports more features. libqterminal has potential.

interesting, I will take a look at libqterminal too thx :)

I see your fork of that project. If need be, I might need to compile it to duplicate the stack list problem.

the newest one I am working is: https://github.com/Gussak/ArxLibertatis/tree/ForArxLaetansMod_TEST2e (but may change to TEST3 etc)

epasveer commented 8 months ago

Glad you were able to figure it out. Yes, if your program is multi-threaded, it may show a "random" thread's stack list. Clicking on the correct thread will view the correct stack list.

The "??" are for functions that have no debug information. In fact, anything that is grayed out (does not have a line number and filename) will have no debug information. When you build your program and all the sub parts, you may want enable "-g" for all of them.

to happen because of a missing source file pthread_create.c, so further calls end unrecognized? all the "??"

It seems you compile your own version of pthread? It's in a folder called "./ntpl". If you try to look at the function, Seer will try to bring up the source for it. If it's not around, Seer will bring up that annoying popup message. After the popup, Seer should give you the option to specify where the file can be located. Otherwise, if the file isn't around, you can just make sure you try not to open it.

Below is an example of looking for a file that may have moved or was deleted.

image

Under SETTINGS->CONFIGURATION->SOURCE, there is a configuration to add a list of alternated folders to look for files. This may help in cases of a custom pthread (like you might have).

image

epasveer commented 8 months ago

Also, if you think the popup box is too annoying. I can change Seer to just add a message to the Message tab instead of creating a popup.

image

epasveer commented 8 months ago

Thanks for the screenshots, too. I don't usually run with "dark mode'. I see Seer renders okay with your "dark mode" settings.

If there are more suggestions, keep them coming!

Gussak commented 8 months ago

I am still having a problem with my lastest change that I did not commit yet. Screenshot from 2024-02-17 17-01-02 there is a moment the game freezes. when I hit interrupt, I get no threads as you can see. And the available ones dont seek back to the project files. I still didnt found useful info about DW_FORM_strp, didnt spend time to research it yet. ps.: found seer output tab and enabled it :)

Gussak commented 8 months ago

btw, I couldnt compile the main branch in ubuntu 22.04, so I created this: https://github.com/Gussak/SeerGDB/tree/ubuntu-latest_TemporaryTEST_UbuntuOnly based on the sources that I downloaded from the compressed file.

I just sent the buffer to std::cerr, it is still glitchy (shows some letters that werent there before) but I got colors of the app output log again.

also, I cant find a way to create a pull request to the ubuntu-latest tag? it is still glitchy anyway.

epasveer commented 8 months ago

btw, I couldnt compile the main branch in ubuntu 22.04,

What were the error messages when you compiled? I'm not sure how new/old that release is. Are your compiling Seer with qt5 or qt6?

I'll sync your fork tomorrow to see what you changed.

when I hit interrupt, I get no threads as you can see.

Try sending a SIGINT instead. Hold down the "Interrupt" button and click on SIGINT. If there are still no threads. Also click on the "Refresh" button in the "Threads" area.

I still didnt found useful info about DW_FORM_strp

I see something in the "Messages" tab about DW_FORM_strp. Can you send an image with the full message?

epasveer commented 8 months ago

Are you getting something like this message?

DW_FORM_strp pointing outside of .debug_str section [in module /home/w/app]

This link suggests it's because a new compiler is used to compile and link a program, but an older version of gdb is used to debug it.

Perhaps your gdb is old?

https://stackoverflow.com/questions/2765078/c-program-debugging-in-gdb-problem

epasveer commented 8 months ago

What's the ouput of this on your machine?

erniep@gracie:(helloworld)$ which gdb
/usr/bin/gdb
erniep@gracie:(helloworld)$ gdb --version
GNU gdb (GDB; SUSE Linux Enterprise 15) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Gussak commented 8 months ago

What were the error messages when you compiled? I'm not sure how new/old that release is. Are your compiling Seer with qt5 or qt6?

qt5 fatal error: QtGui/QShortcut: No such file or directory I should have tried qt6 I guess, I may try again later

I'll sync your fork tomorrow to see what you changed.

-------------------------- src/SeerConsoleWidget.cpp --------------------------
index eba10e8..016cc05 100644
@@ -17,6 +17,7 @@
 #include <fcntl.h>
 #include <termios.h>
 #include <sys/ioctl.h>
+#include <iostream>

 SeerConsoleWidget::SeerConsoleWidget (QWidget* parent) : QWidget(parent) {

@@ -78,6 +79,8 @@ void SeerConsoleWidget::handleText (const char* buffer, int count) {

     // parse off lines
     const char* start = buffer;
+    
+    std::cerr << start;

     while (count > 0) {

Try sending a SIGINT instead. Hold down the "Interrupt" button and click on SIGINT. If there are still no threads. Also click on the "Refresh" button in the "Threads" area.

it takes some time to update, I think I was too hurry. refresh is working!

I see something in the "Messages" tab about DW_FORM_strp. Can you send an image with the full message?

I cleaned it a bit

^error,msg="DW_FORM_strp pointing outside of .debug_str section [in module .../ArxLibertatis/arx]"
^done,variables=[{name="colorMod",value="{static green = <same as static member of an already seen type>, static yellow = <error reading variable: DW_FORM_strp pointing outside of .debug_str section [in module .../ArxLibertatis/arx]>, static cyan = <optimized out>, 

struct ColorMod { Color3f ambientColor; ... typedef Color3 Color3f; ... template class Color3 { static const Color3 yellow;

as you can see in the log, the green color is ok, but yellow causes problem. any hint on what I should look for?

Gussak commented 8 months ago

Perhaps your gdb is old?

https://stackoverflow.com/questions/2765078/c-program-debugging-in-gdb-problem

GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1

$ ldd `which gdb`
    linux-vdso.so.1 (0x00007ffc4e7b4000)
    libreadline.so.8 => /usr/lib/x86_64-linux-gnu/libreadline.so.8 (0x00007fe66a71a000)
    libz.so.1 => /usr/lib/x86_64-linux-gnu/libz.so.1 (0x00007fe66a6fe000)
    libncursesw.so.6 => /usr/lib/x86_64-linux-gnu/libncursesw.so.6 (0x00007fe66a6c2000)
    libtinfo.so.6 => /usr/lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fe66a690000)
    libpython3.10.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.10.so.1.0 (0x00007fe669600000)
    libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007fe669519000)
    libexpat.so.1 => /usr/lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fe66a65d000)
    liblzma.so.5 => /usr/lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe66a632000)
    libbabeltrace.so.1 => /usr/lib/x86_64-linux-gnu/libbabeltrace.so.1 (0x00007fe66a623000)
    libbabeltrace-ctf.so.1 => /usr/lib/x86_64-linux-gnu/libbabeltrace-ctf.so.1 (0x00007fe6694d0000)
    libipt.so.2 => /usr/lib/x86_64-linux-gnu/libipt.so.2 (0x00007fe66a608000)
    libmpfr.so.6 => /usr/lib/x86_64-linux-gnu/libmpfr.so.6 (0x00007fe669200000)
    libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fe66917e000)
    libsource-highlight.so.4 => /usr/lib/x86_64-linux-gnu/libsource-highlight.so.4 (0x00007fe6690e8000)
    libxxhash.so.0 => /usr/lib/x86_64-linux-gnu/libxxhash.so.0 (0x00007fe66a5f1000)
    libdebuginfod.so.1 => /usr/lib/x86_64-linux-gnu/libdebuginfod.so.1 (0x00007fe669bf7000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe668e00000)
    libgcc_s.so.1 => /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe669bd7000)
    libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007fe668a00000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fe66a770000)
    libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fe668cc6000)
    libelf.so.1 => /usr/lib/x86_64-linux-gnu/libelf.so.1 (0x00007fe6694b2000)
    libuuid.so.1 => /usr/lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe6690df000)
    libboost_regex.so.1.74.0 => /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.74.0 (0x00007fe66890d000)
    libcurl-gnutls.so.4 => /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00007fe66903d000)
    libpcre.so.3 => /usr/lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe668c50000)
    libicui18n.so.70 => /usr/lib/x86_64-linux-gnu/libicui18n.so.70 (0x00007fe668400000)
    libicuuc.so.70 => /usr/lib/x86_64-linux-gnu/libicuuc.so.70 (0x00007fe668205000)
    libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007fe6688e3000)
    libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007fe668c2f000)
    librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007fe6688c4000)
    libssh.so.4 => /usr/lib/x86_64-linux-gnu/libssh.so.4 (0x00007fe668857000)
    libpsl.so.5 => /usr/lib/x86_64-linux-gnu/libpsl.so.5 (0x00007fe668843000)
    libnettle.so.8 => /usr/lib/x86_64-linux-gnu/libnettle.so.8 (0x00007fe6687fd000)
    libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007fe66801a000)
    libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fe6687a9000)
    libldap-2.5.so.0 => /usr/lib/x86_64-linux-gnu/libldap-2.5.so.0 (0x00007fe66874a000)
    liblber-2.5.so.0 => /usr/lib/x86_64-linux-gnu/liblber-2.5.so.0 (0x00007fe668739000)
    libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fe667f4b000)
    libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fe66902d000)
    libicudata.so.70 => /usr/lib/x86_64-linux-gnu/libicudata.so.70 (0x00007fe666200000)
    libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007fe666056000)
    libhogweed.so.6 => /usr/lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007fe667f03000)
    libcrypto.so.3 => /usr/lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007fe665c00000)
    libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fe665ac5000)
    libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fe667eeb000)
    libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fe667e20000)
    libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fe665a96000)
    libcom_err.so.2 => /usr/lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fe668733000)
    libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fe666048000)
    libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007fe665a7b000)
    libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fe665a58000)
    libffi.so.8 => /usr/lib/x86_64-linux-gnu/libffi.so.8 (0x00007fe665a4b000)
    libkeyutils.so.1 => /usr/lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fe665a44000)
    libresolv.so.2 => /usr/lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fe665a30000)

I am using -ggdb3 too to compile

Gussak commented 8 months ago

the glitch in the terminal has random chars prepending many lines ,but sometimes many lines show no problem

ËU20:26:45[W] Object:623      NOT CENTERED "manapotion"
20:26:45[D] Object:454      Try load icon texture upscaled for LOD_ICON: "graph/obj3d/textures/potion_mana[icon]" @void LODIconAsSkin(EERIE_3DOBJ*, TextureContainer*)
öËU20:26:45[D] Object:458      Loaded upscaled icon image to use as texture for LOD_ICON: "graph/obj3d/textures/potion_mana[icon]" @void LODIconAsSkin(EERIE_3DOBJ*, TextureContainer*)
òõËU20:26:45[D] Object:466      icon skin "graph/obj3d/textures/potion_mana[icon]" @void LODIconAsSkin(EERIE_3DOBJ*, TextureContainer*)
sÙþ20:36:30[W] OpenALSource:643 [1,633,"sfx/ambiance/loop_menu.wav",3,5,2] buffer underrun detected

should be

20:26:45[W] Object:623      NOT CENTERED "manapotion"
20:26:45[D] Object:454      Try load icon texture upscaled for LOD_ICON: "graph/obj3d/textures/potion_mana[icon]" @void LODIconAsSkin(EERIE_3DOBJ*, TextureContainer*)
20:26:45[D] Object:458      Loaded upscaled icon image to use as texture for LOD_ICON: "graph/obj3d/textures/potion_mana[icon]" @void LODIconAsSkin(EERIE_3DOBJ*, TextureContainer*)
20:26:45[D] Object:466      icon skin "graph/obj3d/textures/potion_mana[icon]" @void LODIconAsSkin(EERIE_3DOBJ*, TextureContainer*)
20:36:30[W] OpenALSource:643 [1,633,"sfx/ambiance/loop_menu.wav",3,5,2] buffer underrun detected
epasveer commented 8 months ago

For the "glitched" text in the terminal, it's because of the "std::err << start". It will fail sometimes because std::err is looking for a "\0" at the end of the "start" buffer, which it may not as the buffer comes in chunks that may end up in the middle of the string.

Try this instead. It accounts for the "count", which is the length of "start" :

erniep@gracie:(src)$ git diff SeerConsoleWidget.cpp
diff --git a/src/SeerConsoleWidget.cpp b/src/SeerConsoleWidget.cpp
index eba10e8..22cd214 100644
--- a/src/SeerConsoleWidget.cpp
+++ b/src/SeerConsoleWidget.cpp
@@ -16,6 +16,7 @@
 #include <stdlib.h>
 #include <fcntl.h>
 #include <termios.h>
+#include <stdio.h>
 #include <sys/ioctl.h>

 SeerConsoleWidget::SeerConsoleWidget (QWidget* parent) : QWidget(parent) {
@@ -79,6 +80,9 @@ void SeerConsoleWidget::handleText (const char* buffer, int count) {
     // parse off lines
     const char* start = buffer;

+    // Write text to stderr on console.
+    write (2, start, count);
+
     while (count > 0) {

         int len = 0;
epasveer commented 8 months ago

I should have tried qt6 I guess, I may try again later

The Qt5 compile issue is due to the relocation of QShortCut to a new location.

If you want to compile on Qt5, change this:

SeerEditorWidgetAssembly.h:#include <QtGui/QShortcut>

to:

SeerEditorWidgetAssembly.h:#include <QtWidget/QShortcut>
epasveer commented 8 months ago

I'm still curios about which version of gdb you're using. Can you run this?

$ gdb --version
epasveer commented 8 months ago

The Qt5 compile issue is due to the relocation of QShortCut to a new location.

This won't work. There are others. Seergdb is now dependent on Qt6.

You'll either need to convert to Qt6, or work from the Seer source for 2.3 or 2.2.

epasveer commented 8 months ago

Reopening this task as there is still discussions.

Gussak commented 8 months ago

compiled with QT6 !

Version 2.4beta (Qt6.2.4)  
Seer, a simple and easy-to-use gui frontend to the GDB debugger, having many features.
Copyright (C) 2021-2024    Ernie Pasveer.

but now I cant set some dark mode style, but if I keep it all in light mode and use https://extensions.gnome.org//extension/3530/true-color-invert/ it looks good again.

GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ gdb --configuration
This GDB was configured as follows:
   configure --host=x86_64-linux-gnu --target=x86_64-linux-gnu
         --with-auto-load-dir=$debugdir:$datadir/auto-load
         --with-auto-load-safe-path=$debugdir:$datadir/auto-load
         --with-expat
         --with-gdb-datadir=/usr/share/gdb (relocatable)
         --with-jit-reader-dir=/usr/lib/gdb (relocatable)
         --without-libunwind-ia64
         --with-lzma
         --with-babeltrace
         --with-intel-pt
         --with-mpfr
         --with-xxhash
         --with-python=/usr (relocatable)
         --with-python-libdir=/usr/lib (relocatable)
         --with-debuginfod
         --without-guile
         --enable-source-highlight
         --with-separate-debug-dir=/usr/lib/debug (relocatable)
         --with-system-gdbinit=/etc/gdb/gdbinit
         --with-system-gdbinit-dir=/etc/gdb/gdbinit.d

("Relocatable" means the directory can be moved with the GDB installation
tree, and GDB will still find it.)
Gussak commented 8 months ago

the super+i to invert colors from gnome extension, I still have to hit everytime when the debugger opens, also for the console window that cant be closed, but there is also the menus that are all white, no workaround. Any tip on how to force dark mode? may be some environment variable?

epasveer commented 8 months ago

When you change to dark mode in Seer's config menu, make sure to save the configuration with:

Settings->Save Configuration

That will make any change permanent. Otherwise, the change is just for the current Seer session. This allows you to play with settings and abandon them if you need to. When you're happy with the changes, you can then save them.

epasveer commented 8 months ago

Screenshots of the problems will help me.

Glad you're able to compile with Qt6!

Gussak commented 8 months ago

that config about dark mode is only for the editor, not the whole interface right? I tried saving and re-opening about 10 times, it only changed the editor area. then I re-run the ubuntu specific SeerGDB and I saw there is like 10 styles, while the main project has only two.

I saw this in seergdb.conf saved from the ubuntu binary:

[mainwindow]
qtstyle=kvantum-dark
size=@Size(1024 518)

but the dark theme is ignored in the main SeerGDB when loading

the left one is ubuntu compilation and QT5 (dark works), the right one is main branch and QT6 (only dark editor, not the whole interface) Screenshot from 2024-02-19 18-41-50

Btw: I like the hooded seer icon more xD

epasveer commented 8 months ago

Btw: I like the hooded seer icon more xD

I do too. But I had to change because it's not mine and its licensing is not in line with opensource.

epasveer commented 8 months ago

that config about dark mode is only for the editor, not the whole interface right?

Yes, the part of the config is for the editor.

Under "View->Styles", you can select a different Qt style. I think your system should show a Gtk/gnome style. Select that. It should use your desktops settings.

Make sure to use:

Settings->Save Configuration

to make it permanent.

Gussak commented 8 months ago

it has not, in "View->Styles" shows only

(cant screenshot a menu, print screen doesnt work with a menu active) leaving the file configured by the ubuntu binary with "qtstyle=kvantum-dark" is not recognized by the main branch binary, so editing it directly with something else may not work I guess? (didnt work)

I tried but did not work too (it works with file-roller for ex) GTK_THEME=Adwaita:dark ./seergdb


btw, got another stack of only one call from an assert, where should have many calls (but boost::stacktrace::stacktrace() also gave non quality results, just memory addressess I think): Screenshot from 2024-02-20 00-32-53

epasveer commented 8 months ago

I just remembered I created a Wiki for dark mode. I use KDE. It's pretty easy to select different Styles (dark or light). You're using Gtk, which is not Qt. The wiki explains how to download some Qt styles that support Gtk. It may help.

https://github.com/epasveer/seer/wiki/Light-and-Dark-themes-for-Seer

Gussak commented 8 months ago

thx! but for now I moved back into ubuntu build, I will try to follow these instructions when I can :)

btw, I couldnt find an evaluate custom code typed in the debugger, option while debugging, is there some way?

and I wonder if there could have some way to open the current line in a text editor. I thought we could have something like std::getenv("SeerGDB_CodeEditor") where the user could custom set to ex "geany \"%{file}\":%{line}", I will see if I can fit it the context menu later.

epasveer commented 8 months ago

and I wonder if there could have some way to open the current line in a text editor

This would be easy to do. Can you create a separate task for this? I can work on it.

epasveer commented 8 months ago

btw, I couldnt find an evaluate custom code typed in the debugger, option while debugging, is there some way?

Sorry, I don't understand what you mean. Can you explain it?

epasveer commented 8 months ago

thx! but for now I moved back into ubuntu build, I will try to follow these instructions when I can :)

No problem. I realize I have another PC box that I can installed Ubuntu with GDK. I have an idea of implementing a dark theme in a simpler way.

Gussak commented 8 months ago

btw, I couldnt find an evaluate custom code typed in the debugger, option while debugging, is there some way?

Sorry, I don't understand what you mean. Can you explain it?

in nemiver we could evaluate an expression on the current context. so if there was a strTest, we could open a evaluate popup and type strTest.size() and it would show the size as the result of the evaluated expression, but it could be any complex code actually, like it just compiled the code we typed while we are debugging, and run that code in that context, as I remember it ran in the current thread, like inserted dynamic code.

mmm.. it have to compile the code we just type, and also insert that compiled code in some way in the running program to be able to reuse the current context.. interesting to just think about how it could be done :)

Gussak commented 8 months ago

and I wonder if there could have some way to open the current line in a text editor

This would be easy to do. Can you create a separate task for this? I can work on it.

yep :) https://github.com/Gussak/SeerGDB/commit/376011f69ffc72ad26f8f6012dc5d08c2aabd4cd this way is not integrated into the application and may only run on linux and mac I think

task? in github? can I do it here?

epasveer commented 8 months ago

so if there was a strTest, we could open a evaluate popup and type strTest.size() and it would show the size as the result of the evaluated expression,

You can do this in the "Variable Logger" widget in the bottom left corner. It has an input field that you can type any expression into. It says "variable name" but expressions are supported. The result is added to the list of variables.

epasveer commented 8 months ago

task? in github? can I do it here?

Sorry, I meant issue report. Just like you created this issue we're talking in. Make a new one for your feature request. Call it:

"Some way to open the current source and line number in an external text editor"

It should be in its own issue. And, yes, it would only work on Linux/Mac, which is all I care about :^)

Gussak commented 8 months ago

so if there was a strTest, we could open a evaluate popup and type strTest.size() and it would show the size as the result of the evaluated expression,

You can do this in the "Variable Logger" widget in the bottom left corner. It has an input field that you can type any expression into. It says "variable name" but expressions are supported. The result is added to the list of variables.

where? I tried watchpoint but nothing showed up (it is in a crash SIGABRT right now tho) Screenshot from 2024-02-21 17-59-25

epasveer commented 8 months ago

You have totally "hidden" the left side panel. It should look like the below. I suspect you dragged the panel and it got hidden. There should be a slider on the left side of the app to restore it.

image

Gussak commented 8 months ago

I was sure I did hid something, Just didnt remember what.. thx! xD

epasveer commented 8 months ago

An easy way to fix it is to edit the seergdb config file. Remove the settings for:

mainwindowsplitters
epasveer commented 8 months ago

Hi @Gussak,

I created a new task for "dark" mode. It now has "dark" on the Style menu, which you can then save the configuration afterwards.

You may want to clone that branch and try it out.

226

epasveer commented 2 months ago

I don't see anything more in this issue to address. I'm closing it. If there is, it can be reopened or a new issue created.