「T」を印刷するアプリケーションで「不正な」OutputDebugString呼び出しがありますが、それを見つけることはできません。DelphiでOutputDebugString呼び出しをデバッグする
何とかOutputDebugString -functionにブレークポイントを設定し、どこから呼び出されているのか確認できますか?
私は、Delphi 2009
「T」を印刷するアプリケーションで「不正な」OutputDebugString呼び出しがありますが、それを見つけることはできません。DelphiでOutputDebugString呼び出しをデバッグする
何とかOutputDebugString -functionにブレークポイントを設定し、どこから呼び出されているのか確認できますか?
私は、Delphi 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
はい、デバッグDCUはそれを行います。今すぐ条件を設定する方法を理解する必要があります。 – Harriv
あなたのコードではないが、(間接的に)あなたが使用しているいくつかのユニットがOutputDebugStringAに行くこともできます。 – Remko