avr-gdb doesn't stop at breakpoint
So I'll try to answer my question myself (for now).

UPDATE:
As mentioned in this tutorial, compiling with option -ggdb should solve the issue, but I haven't been able to try it so far.

It seems the BREAK instructions that cause the AVR CPU to enter stopped mode are not inserted, maybe AVaRICE somehow fails to do that.

For testing, I inserted a "permanent" breakpoint using inline assembler at the end of the line of code where I want to break:

asm("break");

And see there, execution is stopped:

(gdb) target remote localhost:4242
Remote debugging using localhost:4242
0x00000000 in __vectors ()
(gdb) continue
Continuing.

Program received signal SIGTRAP, Trace/breakpoint trap.
measure () at ../sensors.c:110
110             asm("break");


when trying to step:

(gdb) next
measure () at ../sensors.c:110
110             asm("break");
The program is stopped at a permanent breakpoint, but GDB does not know
how to step past a permanent breakpoint on this architecture.  Try using
a command like `return' or `jump' to continue execution.


and jumping to the next line of code works, so that's at least a workaround, also usable in Eclipse:



So now it is about to find out why those BREAK instructions are not inserted...

As for the address mismatch, there seems to have been an issue in the build process. I started out building in Debug configuration in Eclipse, and somehow the command "avr-objcopy" to create the .hex for flashing was prefixed with a "-" in the Eclipse configuration and thus failed, and I was probably flashing an older version.

For now I created the .hex manually, now the addresses in gdb and the disassembly match.