1

Тема: Зневадження cgi додатків з IDE Lazarus(опис)

В продовження теми
http://replace.org.ua/topic/5719/

Тестовано на Ubuntu 14.04 + Apache локально.

ну тепер попрядку
надибав http://wiki.lazarus.freepascal.org/CGI_ … ramming/ru модуль , який вони надибали ще в ішому місці
грався з ним довго пробував через atach proces ловив момент і тд і тд - безтолку
Але потім чуть помислив чуть підкоригував модуль і вийшло.

1. якщо нема ставим gdbserver 
sudo apt-get install gdbserver

2. добавляємо прав для срипта cgi без цього gdbserver не запуститься.
знаходим файл /etc/apache2/envvars
та в стрічці export APACHE_RUN_USER=www-data замість www-data прописуємо поточного користувача
(щоб взнати пишем users в консолі)

3. Перезапускаємо apache

sudo /etc/init.d/apache2 reload - кажуть безпечний спосіб - перечитує наново коф. файли - в мене не спрацювало.
або
/etc/init.d/apache2 restart - працює в Ubuntu
або
sudo apache2ctl restart - має працювати у всіх Linux

4. Налаштовуєм Lazarus, Typhon
заходим в
Інструменти -> Параметри
i змінюємо на Remote debugger якщо треба прописуємо remote_host.
http://replace.org.ua/misc.php?action=pun_attachment&item=1068&preview&secure_str=3461f18

5. Підкючаємо юніт SelfDebug в CGI додаток.
текст

unit SelfDebug;
{
модуль для відлалагодження CGI програм з середовища Lazarus
Інструкція:
-Підключити цей модуль основному модулю програми.
-Виставте в ide в параметрах - налагоджувач - GNU Remote Debugger

-Для Windows пропишіть в зміній path шлях до сервера відлагодження
(інколи хочеться написати Віджучення :) )
- Для Linux: cgi додатки малоправні тому пропишіть їм більше прав
достатніх для запуску gdbserver
}
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils,Process;
implementation

const
  {$ifdef windows}
  DEBUGGER='gdbserver.exe ';
  {$endif}
  {$ifdef linux}
  DEBUGGER='gdbserver ';
  DISPLAY=':0.0';
  {$endif}
  MSWAIT=2000;   //затримка щоб встиг запуститись зневаджувач
var
  AProcess: TProcess;
  s:string;
  f:text;
initialization
AProcess := TProcess.Create(nil);
{$ifdef windows}
AProcess. CommandLine := format('cmd /C START "Debugging %s" /WAIT "%s" "%s" %d"',[paramstr(0),debugger,paramstr(0),GetProcessID]);
{$endif}
{$ifdef linux}
s:=format('xterm -display %s -T "Debugging %s" -e "%s  localhost:2345 %s  %d"',[DISPLAY,paramstr(0),DEBUGGER,paramstr(0),GetProcessID]);  //
// debugln('debug start begin '+s);

AProcess.CommandLine := s;
{$endif}
AProcess.Execute;
sleep(MSWAIT);
finalization
AProcess.Free;
end.

6. В браузері відкриваємо сторінку з посиланням на cgi додаток - переходим в IDE і починаємо дебажити.

Post's attachments

Параметри IDE_008.png 136.39 kb, 72 downloads since 2015-11-22 

Подякували: Torbins, leofun012