![]() |
Quote:
Woot! Someone is using it ;) Quote:
Since bgdbserver uses a TCP connection Forbid() will kill this too. But Forbid() usage should be rare - maybe you could use a semaphore instead? |
Thanks for the reply Bebbo.
I will need to double check, I am not using forbid() specifically that I know. I use some startup code from loonies, my guess is that is disabling interrupts and dma to kill the system, that disables the gdbserver, I will check that. I saw that those integrations on *UAE with gdb and sounds great but they "hate" c++ or I dont know how to make it work. some questions for you then? Would be possible to adapt your gdbserver to be part of a modified version of FS-UAE or WinUAE so it could be at the emulator level? Have you tried connecting from VSCode using the GDB, I think I got it working once, but not sure if it is meant to work with it. Not sure if I am crazy, trying to do my stuff in modern c++, as I can see most of people just avoid it in favor of plain C XD? |
Quote:
Q1: I guess there is a WinUAE version containing a gdb server. I have no clue if my code would be helpful there. Q2: I never tried it. I'm using Eclipse - it's working despite it needs a hack for the Amiga. I'm using the libnix library if I code something for the Amiga also with c++. You can create programs with a reasonable size even using c++. But it's easy to blow the code size up^^ Plus I also debug my real Amiga over TCP. |
I am happy with the current setup on c++ but I am missing a good way to debug. I just go around with old school debugging but it is not great. :)
Code size goes nuts as you use c++ libs, so I have pretty minimal usage of them, to keep executable size manageable. For debugging I can get a 800K exe :). I will keep advancing my project with c++ but I can always fall back to plain C if I find some obstacles moving forward. |
Quote:
for 'smaller' c++: - don't use std::streams - use -fno-exceptions -fno-rtti - unless you are really using excpetions/rtti - use -flto - move non-inlineable member functions into a corresponding cpp file - use base classes - even for templates - with common code in cpp files - don't use codesize increasing c++ features because these exist or you think it's cool... - but use these if it's a real benefit |
Quote:
|
Quote:
Thanks for the tips, basically I am using some of them, my debug exe is huge, but release is under 50K, which I can do better but good enough to keep going. :) I use c++ but close to simple C to avoid that library explosion. but as today, I don't see much benefits on doing the project on plain C. C++ has a bad reputation, in part I think for people getting lost on complex and obscure language constructions. But c++ can be as plain and simple as C in IMHO. |
Quote:
That being said, I want to thank you a lot for your work on WinUAE. It is probably the one big reason why I came back to Amiga and me and my group we are still doing productions for it. I have also a Mist (FPGA) but I use WinUAE all the time. |
A gdb server integrated in WinUAE would be awesome! My C++ game is OS friendly to a point so I don't care.
But it also opens new perspectives: for instance I think that a WinUAE-based server could catch illegal instructions, misaligned addresses, illegal writes, …, or some GURUs, allowing to see the stacktrace of the faulty code. Today, the whole thing goes guru. Also watchpoints would be possible at source level (since WinUAE asm debugger already has watchpoints). But we're probably talking of too much work. |
I'm trying to use m68k-amigaos-gdb from CygWin64 with a program executed on WinUAE with m68k-amigaos-gdb running in a CygWin64 console. I was able to connect with gdb with the process running on emulated Amiga by remote debugging but gdb says that symbols are not found.
There is a suspicious thing. Despite the program is compiled with -g option the size of executable is similar to Release executable compiled without -g option, so I suspect that symbolic information is not included in Amiga executable. Which are the options do you use to compile and debug? What am I doing wrong? Thanks in advance. |
Got caught by this. You have to LINK with -g too. Check your .o sizes. They should be bigger.
|
Quote:
I have set breakpoints on several lines but I were unsuccessful stopping and evaluating variable values, but perhaps I'm doing things wrongly with gdb. I have to investigate gdb options. |
The symbols are loaded from both sides actually. gdb server from amiga side needs them IIRC.
evaluating sometimes doesn't work on some variables... But breakpoints work. |
2 Attachment(s)
Quote:
Code:
cd 'C:\Users\Juan Luis\Documents\NetBeansProjects\ArgsTest' I can't list source code on gdb when I try to debug from my PC. I attach compiling output and how I try to debug from my CygWin terminal running on my Windows. Please, tell me if I'm doing something wrong. jotd, thanks in advance. |
Everything is fine on the amiga side, but on the windows side, you have to use "file amiga-executable" on the Windows side, so the symbols are loaded into the debugger client side (before using "target" command). After that it should work.
|
2 Attachment(s)
Quote:
The "remote" target does not support "run". Try "help target" or "continue". I tried step command without success. Finally, I entered "continue" gdb command, but Amiga bgdbserver run the program without stopping on breakpoint. GDB client says that GDB server killed the program. One suspicious thing is the arguments shown by the program are not the provided arguments in command line (see the first line on Amiga Console). I have already discussed that on other thread of EAB forum with Bebbo. Bebbo told me that the cause of this problem was I wasn't using -noixemul option when compiling. However, when I link with -g option this problem appears again. Do you think that the program is compiled properly? Am I doing something different compared with your way of debugging? |
As a sidenote: you don’t need the exe with debug symbols on the target machine. Instead, one can use a stripped version on the Amiga. Only the host debugger (gdb) needs the executables with symbols.
|
don 't use "run", use "continue" (or c).
run is only for native programs. that said, same thing happens to me now. I could debug my program for a while, then I probably changed things in the code, and running with debug now is not possible with the current version of my game (but my game works, and I can manage without debug fortunately). Maybe try with a super-simple program to start with. |
Quote:
It's very hard to debug a large program without debugging support. I expected this was easier, but I don't know what I'm doing wrong. My program is super-simple. The program I intend to debug is this: Code:
#include <stdio.h> |
Quote:
learn gdb - first lesson: how to set a break point. watch closely: Code:
stefan@ZETRA:~/amiga-gcc/tickets/eab7$ m68k-amigaos-g++ -g test7.c -o test7 so use b main:4 instead of b 4 |
All times are GMT +2. The time now is 04:22. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.