Im Log des Debuggers suchen und sonst garnicht, weil Borland/Codegear/Embarcadero das einfach zu blöd implementiert haben, denn ...
Delphi-Quellcode:
class procedure TThread.NameThreadForDebugging(AThreadName: AnsiString; AThreadID: TThreadID); // ist auch nicht virtuell
type
TThreadNameInfo = record
FType: LongWord; // must be 0x1000
FName: PAnsiChar; // pointer to name (in user address space)
FThreadID: LongWord; // thread ID (-1 indicates caller thread)
FFlags: LongWord; // reserved for future use, must be zero
end;
var
ThreadNameInfo: TThreadNameInfo;
begin
if IsDebuggerPresent then // ########################### toll, niwa?
begin
ThreadNameInfo.FType := $1000;
ThreadNameInfo.FName := PAnsiChar(AThreadName);
ThreadNameInfo.FThreadID := AThreadID;
ThreadNameInfo.FFlags := 0;
try
RaiseException($406D1388, 0, sizeof(ThreadNameInfo) div sizeof(LongWord), @ThreadNameInfo);
except
end;
end;
end;
Also erstmal müsstest DU nach Start der Threads und einmal im Hauptthread das TThread.NameThreadForDebugging aufrufen und dann ist diese Funktion total nutzlos, wenn das Programm nicht im Debugger läuft.
Alternativ diese Funktion böse hooken und die Threads selber in einer Liste speichern
oder TThread.Execute, bzw. Classes.ThreadProc oder Windows.BeginThread hooken und die ThreadIDs in einer Liste speichern
oder direkt in deine Threads am Anfang einen Code rein, der das in einer eigenen Liste speichert.