Тема: Зневадження 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.
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 і починаємо дебажити.