[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gdb and assignment statements
From: |
Michael Elizabeth Chastain |
Subject: |
Re: Gdb and assignment statements |
Date: |
Wed, 13 Dec 2000 23:14:13 -0800 |
Kevin Buettner wrote ...
> I'm having trouble understanding why you wish to set a breakpoint on a
> line that the compiler has optimized out as being a nop.
I see it like this: htons() on *some* platforms is an identity mapping.
But this is an implementation detail, and it is opaque to the application
programmer.
So it is reasonable to write:
port = htons(port);
... and it is also reasonable to try to set a breakpoint there.
Conceptually, something is happening to "port". Whether something happens
to its physical bits depends on whether the machine is big-endian
or little-endian.
> If line 6 (after macro expansion) is really ``port = port;'', what are
> you going to learn by stopping on line 6 that you can't learn by stopping
> on line 7?
I agree. gdb is a little surprising but it is correct, and I think gdb
is doing the best that it can.
It's just one more thing to learn about C: that some code expands out
to nothing and gets optimized away. On big-endian architectures,
htonl/htons/ntohl/ntohs can be optimized like this.
Michael Elizabeth Chastain
<mailto:address@hidden>
"love without fear"
- Re: Gdb and assignment statements,
Michael Elizabeth Chastain <=