On 18.08.2017 02:05, Johnson Jones wrote:
On Friday, 18 August 2017 at 00:02:23 UTC, Johnson Jones wrote:
On Thursday, 17 August 2017 at 22:41:51 UTC, Johnson Jones wrote:
I was doing something strange ;/

I had code like

mixin(import("Myfile.d"));
CallSomeFunctionInMyFile();

And no BP's could be hit in side the function call. D would say that there was an error in the symbols for the project.


but making MyFile.d a module(adding module MyFile; at the top) and doing

import Myfile;
CallSomeFunctionInMyFile();

Allowed the breakpoints to be hit.

I guess this is a related problem with mixin debugging, which still doesn't work for me. In a sense, it might be a good why to debug them because the file exists already and one doesn't have to have it generated by the compiler to debug. This should help get the symbols and line numbers correct and the line mappings. Might help make a seemless way to debug them. e.g., any BP's in Myfile.d have to be translated to the original file they are mixed in at and vice versa when debugging them(open Myfile D).

Hmm, maybe that wasn't the fix, still getting the error in some cases:

The error is "Unexpected symbol reader error while processing test.exe"

It might have been coincidence that the above change worked or it might be that it only partially fixed it.

What's strange about it is that delegates inside the function I'm calling are hit but code in the root of the function are not.

void CallSomeFunctionInMyFile()
{
    addDelegate(()
    {
       foo();
    });

    foo();
}

The first foo will break on a BP assinged to it but the second one won't.


You can try switching to the disassembly view to see where the compiler generated debug line numbers.

It assumes line numbers and code offsets are always ascending. Maybe assumption doesn't hold here.

Reply via email to