Как просмотреть вывод OutputDebugString?
Я хочу использовать OutputDebugString()
в моем приложении, а затем есть возможность показать его в отдельном средстве просмотра, когда приложение развернуто в поле.
То есть я не хочу менять флаг и перестраивать мой.exe для включения и выключения отладки.
Погуглив, кажется, что DebugView должен справиться с этим, но ни он, ни TraceTool не показывают никакого вывода из этого кода.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
OutputDebugString(PChar('Hello, wurld'));
end;
end.
Я прочитал документацию, но безрезультатно, и вижу, что у других были подобные проблемы, но они не опубликовали решение.
Есть ли решение?
5 ответов
GExperts имеет средство просмотра отладки и модуль, который вы добавляете в свое приложение, что сделает это за вас, даже в XE2 Starter. Увидеть DebugIntf
блок и GExpertsDebugWindow.exe
Приложение, которое оно включает. Они работают под XE2 Starter (и почти во всех других версиях Delphi).
GExperts также включает в себя множество других замечательных улучшений IDE и редакторов, и, конечно, они были всегда, поэтому они довольно надежные инструменты.
DebugView
инструмент работает отлично; только запустите приложение напрямую (без Delphi IDE или другого подключенного отладчика).
В любом случае, естественным способом просмотра выходных данных OutputDebugString для приложения Delphi является использование IDE Delphi и Event Log
Окно.
CnWizards содержит инструмент CnDebugViewer.exe, который может захватывать OutputDebugString (должен запускаться от имени администратора в Windows 7).
В отличие от DbgView, CnDebugViewer может создавать отдельные вкладки для разных приложений.
CnPack содержит модуль CnDebug.pas. С помощью этого устройства вы можете отслеживать типизированные объекты, коллекции, исключения, memdump и т. Д. С помощью CnDebug.pas вы также можете указать, следует ли автоматически запускать CnDebugViewer, выполнять ли дамп в файл при отправке отладочных сообщений и т. Д.
Одна проблема с использованием OutputDebugString заключается в том, что другие программы также могут использовать его, загромождая ваш журнал: отладка вызовов OutputDebugString в Delphi.
Вы можете использовать CodeSite Express, которым мы очень довольны в повседневном использовании: http://www.raize.com/devtools/codesite/Default.asp.
В моей версии XE5 мне пришлось включить опцию "Вывод сообщений" в разделе:
Сервис> Параметры> Параметры отладчика> Журнал событий
Я не помню, чтобы отключить его.