On 30/04/2026 18:52, Graeme Geldenhuys via fpc-devel wrote:
On Thursday, 30 April 2026 15:35:38 BST Martin Frb via fpc-devel wrote:
I was thinking about a tool (maybe to be included in automated testing)
that could run gdb and lldb on given test-code (including compiling that
code).
And then inject commands like "p MyObject^" and regex the output for
known field-names and -value (the formatting of those doesn't matter,
only the presence).
If that is of interest I may further look into it.
GDB already has that built-in. I've used it extensively in my projects for
automated tests.
There are two primary ways to do this: using the `-ex` flag for quick commands
or the `-x` flag for script files.
Example: Run a program, print a variable, and exit
$> gdb -batch -ex "break main" -ex "run" -ex "print my_variable" -ex "bt" ./
my_program
Not exactly what I meant... If you do it this way, then you can only
match the entire output against one expectation for it all.
As a human, that is fine, => if you want to run it manually and see..
Though, if you want to test hundreds of values, then you would not check
them all manually.
I actually had already started something.
It takes a list
p data | val\b.*\b42
gdb command, pipe, regex
=> and that regex must match the output of exactly that one command.
And then it can loop over lots of them.
The tool also takes the location of the compiler, and the location of
the pas source.
But, if you want to test against several versions of gdb, then you need
to run several times.
The question to the fpc team then is, would they want to add that to the
test suite?
That would mean there needs to beĀ (at least) one gdb in a known
location. And then the freshly build fpc, would be asked to compile the
test-sources, and they would run through gdb (or lldb).
Of course you change the version of the gdb used, and then you may need
to do updates to the test.
_______________________________________________
fpc-devel maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel