Как просмотреть вывод 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 мне пришлось включить опцию "Вывод сообщений" в разделе:

Сервис> Параметры> Параметры отладчика> Журнал событий

Я не помню, чтобы отключить его.

Другие вопросы по тегам