Как просмотреть вывод OutputDebugString?

Я хочу использовать OutputDebugString() в моем приложении, а затем иметь возможность показать его в отдельном просмотрщике при развертывании приложения в поле.

то есть, я не хочу менять флаг и перестраивать мой .exe для включения и выключения отладки.

Googling вокруг, похоже,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 и


CnWizards содержит инструмент, CnDebugViewer.exe, который может захватывать OutputDebugString (должен запускаться как администратор в Windows 7).

не как DbgView, CnDebugViewer может создавать отдельные вкладки для разных приложений.

CnPack содержит блок, CnDebug.первенство. С помощью этого устройства можно отслеживать типизированные объекты, коллекции, исключения, memdump и т. д. С CnDebug.pas, вы также можете установить, следует ли автозапуск CnDebugViewer, дамп в файл при отправке отладки сообщений и т. д.


одна из проблем с использованием OutputDebugString заключается в том, что другие программы также могут использовать его, загромождая ваш журнал: отладка вызовов OutputDebugString в Delphi.

вы могли бы использовать CodeSite Express, который мы были очень счастливы в день-в-день использовать: http://www.raize.com/devtools/codesite/Default.asp.


в моей версии XE5 мне пришлось включить опцию "выходные сообщения" в разделе:

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

Я не помню, как отключил его.