HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: c++, open source, инструменты, язык си</p>
1 <p>Теги: c++, open source, инструменты, язык си</p>
2 <p>Предлагаем вашему вниманию краткий обзор инструмента gdbgui. Это современный браузерный GDB (GNU-отладчик), предназначенный для языков программирования C, C++, Rust и Golang. С его помощью вы сможете просматривать трассировку стека, добавлять контрольные точки и многое другое. Работать с таким инструментом очень просто: достаточно выполнить запуск gdbgui из терминала, в результате чего в вашем браузере откроется новая вкладка.</p>
2 <p>Предлагаем вашему вниманию краткий обзор инструмента gdbgui. Это современный браузерный GDB (GNU-отладчик), предназначенный для языков программирования C, C++, Rust и Golang. С его помощью вы сможете просматривать трассировку стека, добавлять контрольные точки и многое другое. Работать с таким инструментом очень просто: достаточно выполнить запуск gdbgui из терминала, в результате чего в вашем браузере откроется новая вкладка.</p>
3 <h2>Особенности установки</h2>
3 <h2>Особенности установки</h2>
4 <p>Установка выполняется следующим образом:</p>
4 <p>Установка выполняется следующим образом:</p>
5 <p>1.Для ОС<strong>Linux</strong>:</p>
5 <p>1.Для ОС<strong>Linux</strong>:</p>
6 sudo pip install gdbgui -upgrade<p>2.Для ОС<strong>macOS</strong>:</p>
6 sudo pip install gdbgui -upgrade<p>2.Для ОС<strong>macOS</strong>:</p>
7 sudo pip install gdbgui --upgrade -user<p>Кстати, может появиться ошибка следующего типа:</p>
7 sudo pip install gdbgui --upgrade -user<p>Кстати, может появиться ошибка следующего типа:</p>
8 please check gdb is codesigned - see taskgated(8)<p>В таком случае вам помогут<a>инструкции отсюда</a>.</p>
8 please check gdb is codesigned - see taskgated(8)<p>В таком случае вам помогут<a>инструкции отсюда</a>.</p>
9 <p>3.Для ОС<strong>Windows</strong>:</p>
9 <p>3.Для ОС<strong>Windows</strong>:</p>
10 pip install gdbgui -upgrade<p>Тут нужно отметить, что пользователям virtualenv префикс sudo не нужен. Также можно клонировать репозиторий:</p>
10 pip install gdbgui -upgrade<p>Тут нужно отметить, что пользователям virtualenv префикс sudo не нужен. Также можно клонировать репозиторий:</p>
11 git clone https://github.com/cs01/gdbgui cd gdbgui pip install -r requirements.txt gdbgui/backend.py<h2>Особенности запуска</h2>
11 git clone https://github.com/cs01/gdbgui cd gdbgui pip install -r requirements.txt gdbgui/backend.py<h2>Особенности запуска</h2>
12 <p>Для запуска выполняем:</p>
12 <p>Для запуска выполняем:</p>
13 gdbgui [бинарный файл для отладки]<p>В результате в вашем браузере появится новая вкладка с инструментом gdbgui, о чём мы уже упоминали вначале.</p>
13 gdbgui [бинарный файл для отладки]<p>В результате в вашем браузере появится новая вкладка с инструментом gdbgui, о чём мы уже упоминали вначале.</p>
14 <h2>Особенности работы</h2>
14 <h2>Особенности работы</h2>
15 <p>Рассмотрим ряд рабочих нюансов: • отладчик каждой программы будет открываться в отдельной вкладке (то есть для каждой вкладки будет создаваться новый GDB-экземпляр); • можно устанавливать или удалять контрольные точки; • можно просматривать стек; • можно оценивать произвольные выражения и устанавливать их значения с течением времени; • вы без проблем просмотрите все регистры; • встроен анализатор исходного кода, имеющий возможность перехода на указанную строку; • возможен показ ассемблерного кода вблизи исходников, возможно выделение текущей инструкции; • есть уведомления о доступности обновлений.</p>
15 <p>Рассмотрим ряд рабочих нюансов: • отладчик каждой программы будет открываться в отдельной вкладке (то есть для каждой вкладки будет создаваться новый GDB-экземпляр); • можно устанавливать или удалять контрольные точки; • можно просматривать стек; • можно оценивать произвольные выражения и устанавливать их значения с течением времени; • вы без проблем просмотрите все регистры; • встроен анализатор исходного кода, имеющий возможность перехода на указанную строку; • возможен показ ассемблерного кода вблизи исходников, возможно выделение текущей инструкции; • есть уведомления о доступности обновлений.</p>
16 <h2>Плюсы gdbgui</h2>
16 <h2>Плюсы gdbgui</h2>
17 <p>Инструмент имеет ряд преимуществ: • нет ничего лишнего, он предназначен только для отладки программ; • дизайн создан под влиянием отладчика Chrome; • инструмент написан на Python и JavaScript; •<a>gdbgui</a>бесплатен, а его исходный<a>код открыт</a>.</p>
17 <p>Инструмент имеет ряд преимуществ: • нет ничего лишнего, он предназначен только для отладки программ; • дизайн создан под влиянием отладчика Chrome; • инструмент написан на Python и JavaScript; •<a>gdbgui</a>бесплатен, а его исходный<a>код открыт</a>.</p>
18 <p><strong>Пример кода на C++</strong>:</p>
18 <p><strong>Пример кода на C++</strong>:</p>
19 #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;map&gt; int main(void) { std::cout &lt;&lt; "Hello World" &lt;&lt; std::endl; std::cout &lt;&lt; "Example vector" &lt;&lt; std::endl; std::vector&lt;double&gt; myvector {}; myvector.push_back(1.1); myvector.push_back(2.2); myvector.push_back(3.3); myvector.push_back(4.4); for (auto i : myvector){ std::cout &lt;&lt; i &lt;&lt; " is an element in a vector" &lt;&lt; std::endl; } std::cout &lt;&lt; "Example map" &lt;&lt; std::endl; std::map&lt;char,int&gt; mymap; mymap['a'] = 10; mymap['b'] = 30; mymap['c'] = 50; mymap['d'] = 70; for (auto i : mymap){ std::cout &lt;&lt; i.first &lt;&lt; " is a key in a map with a value of " &lt;&lt; i.second &lt;&lt; std::endl; } return 0; }<p>Если интересуют другие примеры кода и make-файлы для C ++, вам<a>сюда</a>.</p>
19 #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;map&gt; int main(void) { std::cout &lt;&lt; "Hello World" &lt;&lt; std::endl; std::cout &lt;&lt; "Example vector" &lt;&lt; std::endl; std::vector&lt;double&gt; myvector {}; myvector.push_back(1.1); myvector.push_back(2.2); myvector.push_back(3.3); myvector.push_back(4.4); for (auto i : myvector){ std::cout &lt;&lt; i &lt;&lt; " is an element in a vector" &lt;&lt; std::endl; } std::cout &lt;&lt; "Example map" &lt;&lt; std::endl; std::map&lt;char,int&gt; mymap; mymap['a'] = 10; mymap['b'] = 30; mymap['c'] = 50; mymap['d'] = 70; for (auto i : mymap){ std::cout &lt;&lt; i.first &lt;&lt; " is a key in a map with a value of " &lt;&lt; i.second &lt;&lt; std::endl; } return 0; }<p>Если интересуют другие примеры кода и make-файлы для C ++, вам<a>сюда</a>.</p>
20  
20