Can't set BP in middle of line
Michelle Long
HappyDance321 at gmail.com
Mon Nov 26 10:42:02 UTC 2018
On Tuesday, 20 November 2018 at 15:11:56 UTC, Stefan Koch wrote:
> On Sunday, 4 November 2018 at 21:17:32 UTC, Michelle Long wrote:
>> On Sunday, 4 November 2018 at 08:27:34 UTC, Rainer Schuetze
>> wrote:
>>> [...]
>>
>>
>> Is it then possible to simply split a line internally to
>> handle it?
>>
>> [...]
>
> Debug information is mapped to machine-code on a source line by
> source line basis.
>
> Therefore it's indeed nontrivial to do this.
Why would that be non-trivial?
semantically there is nothing different between
statement; statement;
and
statement;
statement;
to say that there is a difference to the compiler is not true.
To say it is non-trivial does not mean it is. You have to at
least prove it with some reasonable logic because the facts do
not support your claim.
Whatever mapping takes place, one just needs to propagate the
column info along with the line. It may be non-trivial to
implement in the compiler because of the design, but it is not a
hard problem, in fact, it should be quite easy.
In fact, if the compiler simply broke every statement in to it's
own line, by adding a new line to each statement(after every `;`)
and memorized that mapping then it could be inverted to get the
desired behavior... that is almost a trivial solution, so to say
it is non-trivial simply does not jive and you will have to be
more specific why.
For example, one could write a pre-parser that records the line
and column mapping of statements, converts all multi-statement
lines into multi-line statements. Compile, then unmap whatever
the compiler says:
statement1; statement2; statement3;
Record line/col
0/0 0/12 0/24
convert
statement1;
statement2;
statement3;
0/0
1/0
2/0
map
0/0 -> 0/0
0/12 -> 1/0
0/24 -> 2/0
Then the mapping can be inverted after compilation.
E.g., If there is an error on line 2 it is looked up in the
mapping
2/0 -> 0/24.
And so the error is actually at line 0/24 in the original
sort(before newlines added).
It's quite simple. So you are simply wrong. One could write such
a preprocessor and get the mapping and such and it would work
fine. All it would require is to properly parse D code code to
get the end of statements ';', insert a new line, and determine
the mapping and for the debugger then to invert the map when line
info is presented.
Because it is trivial to do, except for the D language
processing(which the dmd parser should handle without problem and
why it could be done in dmd transparently pre and post), it
probably should be looked in to.
It's easy to say something is true or false... but it doesn't
make it so. I've demonstrated a feasible solution.
Many people thought it was impossible to do X and they were
proven wrong. Have you learned your lesson? We can at least then
spend the time in finding an optimal way to do this so we all
benefit from it.
More information about the Digitalmars-d-debugger
mailing list