我的應用程序中有一些「流氓」OutputDebugString調用打印出「T」,但我不能找到它。調試Delphi中的OutputDebugString調用
是否有可能以某種方式設置的OutputDebugString - 函數斷點,看看它是從哪裏叫什麼名字?
我使用德爾福2009年
我的應用程序中有一些「流氓」OutputDebugString調用打印出「T」,但我不能找到它。調試Delphi中的OutputDebugString調用
是否有可能以某種方式設置的OutputDebugString - 函數斷點,看看它是從哪裏叫什麼名字?
我使用德爾福2009年
在您的項目多少個電話給OutputDebugString
有哪些?您可以使用「在文件中查找」對話框來查找它們全部,如果它們不是太多,就不會有問題。
否則,您可以 - 當然 - 使用搜索並替換並替換所有OutputDebugString(
與raise Exception.Create(
。
你也可以在項目中使用的所有其他單位的單位寫一個函數
procedure OutputDebugString(const Str: string);
begin
raise Exception.Create(Str);
end;
。如果僅在uses
列表中的Windows.pas
之後聲明瞭此新單元,則將使用此新函數代替Windows.pas。
是的,您可以在Windows.pas中放置斷點。首先,在您的項目中,轉到項目選項,然後在調試下,選擇「使用調試DCU」。然後你可以去Windows.pas並放置一個斷點行30769:
procedure OutputDebugString; external kernel32 name 'OutputDebugStringW';
完成。
現在,任何來自應用程序的OutputDebugString調用都將在斷點處中斷。您還可以打開記錄斷點屬性以記錄調用堆棧。
太多的項目和組件分佈..我甚至不知道該消息是來自自己的還是第三方代碼。 – Harriv 2010-11-23 17:32:12