I have merged, and pushed that commit.
Testcase for FindNamedProcSymbolYours, I don't have plans to add them.
I decided to test the empty name in the testsuite.
I worded that badly: I decided to test the change in that commit (that set the name to empty), in the existing unmodified testsuite.
I.e. test the commit does not break the current test.
In case the code is reached by any other path / since I removed the name in all overloads of FindExportedSymbolInUnits
the temporary probe I have been quoting numbers from is currently the only thing that runs FindNamedProcSymbol at all
I though you had it added to your debugger already. But either way, you have code to call it, and get results. I don't.
The address-0 readability policy moving into MemManager
Details later (btw, I will be away in a week, for a week)
threads
Probably a new topic. I still have to decide some bits...
Generally important to make one distinction
FpDebug
LazDebuggerFp
* LazDebuggerFp
is currently not a concern of making it thread free. (albeit, there are defines for benchmarking, that will force it into single thread, but I don't know if they are useful for real debugger implementations)
And other consumers don't need to do threads. FPDebug should work fine if run in a single thread. DbgController.ProcessLoop can be called in the main thread (at least should be).
Of course it will then be blocking, when it does WaitForDebugEvent.
So, yes, a none threaded consumer will block there. That is by design. (that is how gdb also works, while running you can't send new commands / to interrupt you must signal the target app from outside the debugger / albeit gdb has an async mode)
I don't know if you were looking for something else on the above...
* FpDebug
provides TFpThreadWorkerQueue for
- outside usage (that is no concern, if not used, no problem)
- has some code that starts threads itself (finding symbols by name / hashing names / ...)
The latter of the "inside FpDebug" usages is what should be addressed. If the outer consumer doesn't do threads, then FpDebug also shouldn't use them internally.
Maybe have a factory for the queue? And pass a no-thread queue.
Worker-pool shutdown in a headless host.
Would depend on examples coming up.
Gut feeling: if you create a pool, you need to shut it down.
If you don't create one, it works as detailed in the Lazdebugger section. (but would want the fixes in FpDebug)