Как просмотреть вывод 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.
Я прочитал документацию, безрезультатно, и вижу, что у других были подобные проблемы, но не опубликовал решение.
Есть ли решение?
Ответы
Ответ 1
GExperts имеет средство просмотра отладки и блок, который вы добавляете в свое приложение, которое сделает это за вас, даже в XE2 Starter. См. Раздел DebugIntf
и приложение GExpertsDebugWindow.exe
, которое оно включает. Они работают под XE2 Starter (и почти все другие версии Delphi).
GExperts также включает в себя множество других улучшений IDE и редакторов, которые великолепны, и, конечно же, они были навсегда, поэтому они довольно прочные инструменты.
Ответ 2
Инструмент DebugView
отлично работает; только убедитесь, что вы запускаете приложение напрямую (без использования встроенной среды Delphi или другого отладчика).
В любом случае естественным способом просмотра вывода OutputDebugString для приложения Delphi является использование среды Delphi IDE и окна Event Log
.
![Enter image description here]()
![Enter image description here]()
Ответ 3
CnWizards содержит инструмент CnDebugViewer.exe, который может захватывать OutputDebugString (должен запускаться как администратор в Windows 7).
Не похоже на DbgView, CnDebugViewer может создавать отдельные вкладки для разных приложений.
CnPack содержит единицу, CnDebug.pas. С помощью этого устройства вы можете трассировать типизированные объекты, коллекции, исключения, memdump и т.д. С помощью CnDebug.pas вы также можете установить, следует ли автонастраивать CnDebugViewer, отправлять ли дамп при отправке отладочных сообщений и т.д.
Ответ 4
Одна проблема с использованием OutputDebugString заключается в том, что другие программы также могут использовать ее, загромождая ваш журнал: Отладка вызовов OutputDebugString в Delphi.
Вы можете использовать CodeSite Express, который нам очень понравился в повседневном использовании: http://www.raize.com/devtools/codesite/Default.asp.
Ответ 5
В моей версии XE5 мне пришлось включить опцию "Выходные сообщения":
Инструменты > Параметры > Параметры отладчикa > Журнал событий
Я не помню, чтобы отключить его.