GDB është një korrigjues për C, C++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada dhe Modula-2.
CentOS bazohet në RHEL (Red Hat Enterprise Linux). Një nga qëllimet kryesore të RHEL është të jetë një sistem operativ i qëndrueshëm server, që do të thotë se versionet më të reja të paketave softuerike nuk janë gjithmonë të disponueshme.
Në kohën e shkrimit, CentOS 6 ofron GDB v7.2. Megjithatë, ekipi i GDB-së, së fundmi lëshoi kodin për v7.91.
Zyrtarisht sugjerohet që të ekzekutohet një shpërndarje tjetër Linux për të përdorur një version më të ri të GDB. Kjo nuk është gjithmonë ideale. Për fat të mirë, është e mundur të instaloni versionet më të reja të GDB në CentOS 6. Meqenëse GDB është një korrigjues dhe jo një komponent thelbësor i sistemit, ju jeni mjaft të sigurt për të përdorur një version më të ri.
Ky artikull shpjegon se si të instaloni versionet e mbështetur dhe të pambështetur të GDB në CentOS 6.
Unë do të shpjegoj gjithashtu se si të konfiguroni GDB për t'ju dhënë informacione të korrigjimit më të lehtë për t'u lexuar kur përdorni Bibliotekën Standarde të C++ (si vargu) dhe Bibliotekën Standarde të Modeleve (si vektori). Kjo veçori quhet printim i bukur.
Hyni në VPS-në tuaj dhe konfiguroni llogarinë tuaj të përdoruesit
-
Hyni në VPS-në tuaj. Kjo mund të bëhet duke klikuar "View Console" në panelin e kontrollit Vultr, ose me një klient SSH.
(a) Hyni si rrënjë.
(b) Krijoni llogarinë tuaj të përdoruesit. Vendosni fjalëkalimin.
adduser <username>
passwd <username>
(c) Jepni përdoruesit akses sudo.
visudo
After the line "root ALL=(ALL) ALL"
Add the line "<username> ALL=(ALL) ALL"
--- If you aren't familiar with vi, go to the line "root ALL=(ALL) ALL".
--- Hit "o" to create a new line after that line and enter insert mode.
--- Type "<username> ALL=(ALL) ALL".
--- Hit ESC.
--- Type "ZZ" to save.
(d) Dilni si rrënjë, pastaj identifikohuni përsëri me llogarinë tuaj të përdoruesit. Është shumë më e sigurt të mos identifikohesh kurrë si rrënjë. Përdorimi i sudo është një praktikë më e mirë.
Nëse dëshironi të instaloni versionin (më të vjetër) të GDB të mbështetur zyrtarisht
-
Instaloni GDB.
sudo yum install gdb
-
Kontrolloni versionin e instaluar dhe shikoni vendndodhjen e tij.
gdb --version
May say: GNU gdb (GDB) Red Hat Enterprise Linux (7.2-75.el6)
which gdb
/usr/bin/gdb
Nëse dëshironi të instaloni një version më të ri të GDB nga burimi
-
Instaloni një përpilues C, siç është GCC. Një përpilues C++ nuk nevojitet për të ndërtuar GDB nga burimi, por nevojitet për të demonstruar veçorinë e bukur të printimit të GDB. Mund të ndërtoni një version më të fundit të GCC nga burimi duke kryer hapat në artikullin Si të instaloni GCC në CentOS 6 . Ose, mund të instaloni versionin CentOS 6 të mbështetur zyrtarisht të GCC duke ekzekutuar:
sudo yum install gcc gcc-c++
-
Instaloni paketat e kërkuara shtesë.
sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
-
Vendosni se cilin version të GDB-së që dëshironi të ndërtoni nga burimi. Vizitoni faqen e GDB FTP për të parë versionet që janë të disponueshme për shkarkim.
-
Merrni burimin e versionit të GDB që dëshironi. Pjesa tjetër e këtij artikulli është shkruar për v7.9.1 dhe do të shkarkojë burimet në ~/sourceInstallations/gdb-7.9.1/- do t'ju duhet të zëvendësoni numrin e duhur të versionit me versionet më të reja.
mkdir ~/sourceInstallations
cd ~/sourceInstallations
wget ftp://ftp.gnu.org/gnu/gdb/gdb-7.9.1.tar.gz .
tar -zxvf gdb-7.9.1.tar.gz
-
Ndërtoni GDB. Nëse kjo përfundon saktë, rreshti i fundit që do të shihni do të thotë "sukses". Është normale të shohësh disa mesazhe me pamje gabimi që lëvizin shpejt. Këto janë të sigurta për t'u injoruar.
mkdir gdb-7.9.1.build
cd gdb-7.9.1.build
../gdb-7.9.1/configure --with-python=yes && make && sudo make install && echo success
--- If your VPS has multiple cores, you can speed up the build by changing the middle part
--- of this line from "&& make &&" to "&& make -j <number of cores> &&".
--- You can see the number of cores your VPS has by running "nproc"
--- The parameter "--with-python=yes" is necessary for the pretty printing feature
-
Instaloni C++ printing bukur.
cd ~/
svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python gdb_printers
Create a file ~/.gdbinit of:
python
import sys
sys.path.insert(0, '/home/<yourUserName>/gdb_printers/')
from libstdcxx.v6.printers import register_libstdcxx_printers
end
--- One way to create this file is to run "vi ~/.gdbinit", hitting "i" to enter insert mode,
--- typing the above file, hitting ESC, and hitting "ZZ" to save.
-
Kontrolloni versionin e instaluar dhe vendndodhjen e tij.
gdb --version
May say: GNU gdb (GDB) 7.9.1
which gdb
/usr/local/bin/gdb
-
Drejtoni opsionalisht GDB dhe shikoni printim të bukur.
mkdir ~/gdbExample
cd ~/gdbExample
Create a file gdbExample.cpp of:
#include <string>
#include <vector>
using namespace std;
int main() {
string foo = "bar";
vector<string> vec;
vec.push_back("foo");
vec.push_back("bar");
vec.push_back("foobar");
}
--- One way to create this file is to run "vi gdbExample.cpp", hitting "i" to enter insert mode,
--- typing the above file, hitting ESC, and hitting "ZZ" to save.
g++ -ggdb gdbExample.cpp -o gdbExample
Start GDB traditionally, by running "gdb ./gdbExample". Or, start GDB by using its terminal user interface (basically a text mode GUI), by running "gdb --tui ./gdbExample".
Enter "break main" to set a breakpoint at the beginning of function main() -- and it will say:
Breakpoint 1 at 0x<someAddress>: file gdbExample.cpp, line 6.
Enter "run" to start the program, which will immediately hit the breakpoint you just set -- and it will say:
Starting program: /home/<yourUserName>/gdbExample/gdbExample
Breakpoint 1, main () at gdbExample.cpp:6
6 string foo = "bar";
Enter "next" and hit enter four times, and gdb will move up to just before executing:
10 vec.push_back("foobar");
Enter "print foo" and gdb will show:
$1 = "bar"
Enter "print vec" and gdb will show:
$2 = std::vector of length 2, capacity 2 = {"foo", "bar"}
--- Remember, line 10 hasn't executed yet to add "foobar" to the vector
Enter "quit" and "y" to quit anyway.
-
Kërkoni opsionalisht hapësirën në hard diskun. ~/sourceInstallationsDrejtoria juaj do të marrë rreth 386 MB. Ndoshta është e mençur të mbash drejtoritë, pasi ka opsione opsionale të konfigurimit që mund t'ju nevojiten t'i përdorni në një moment në të ardhmen, dhe do të ishte më shpejt të kishim bërë tashmë shumë. Gjithashtu, procesi i ndërtimit krijon regjistra që më vonë mund t'i kontrolloni dhe të punoni nëse diçka shkon keq. Por, pasi të keni ekzekutuar sudo make installmë herët, GDB-ja juaj e instaluar nuk varet nga asgjë në këtë direktori dhe hapësira mund të jetë me çmim të lartë, kështu që ju mund ta bëni këtë hap dhe të rikuperoni 386 MB ose më shumë. E RËNDËSISHME: mos e fshini ~/gdb_printers/drejtorinë! Përmbajtja e kësaj drejtorie ngarkohet sa herë që ekzekutoni GDB. Ato NUK u përpiluan në vetë GDB.
cd ~/
rm -rf sourceInstallations
--- Again, if you can spare the space, you may someday be happy to have left it there.