c ++ - VS2008 debugger og kernel32.dll

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har lige fejlet en proces (i C ++/Windows), der bruger 'GetThreadContext', som er i kernel32.dll.

Jeg har bemærket, at jeg kunne få det til at være med


unsigned long address = (unsigned long)(&GetThreadContext);


men da jeg kiggede på fanen loading loaded - så jeg, at symbolerne for kernel32.dll ikke blev indlæst!

Hvordan kendte VS2008 adressen til 'GetThreadContext'?

Og hvordan kan jeg selv gøre det uden at have PDB'erne?

tak :)

Bedste reference


Dette virker af samme grund som


GetThreadContext(hThread, lpContext);


arbejder. Navngivne funktioner, der bruges i din kode, skal løses ved linketid, eller linket vil mislykkes. Uanset om du tager deres adresse ved hjælp af & eller ringe til dem, er det ligegyldigt. Ved kørsel er DLL'en indlæst, og funktionsnavnet løser derefter til en bestemt adresse i processen.


FBF-filer bruges kun til at give forbedrede symbolske oplysninger under debugging. Normalt bruges de ikke i løbetid.


[[Jeg kan ikke hjælpe med at tænke, at jeg mangler noget ved dette spørgsmål. Fortæl mig, om dette ikke er dit problem.]]