Nano Hash - криптовалюты, майнинг, программирование

Показать текущую строку кода C, который выполняется

Есть ли способ просмотреть код C "вживую", отображая текущую текущую строку по мере ее выполнения?

Вы можете довольно близко, используя GDB, но мне интересно, есть ли что-то немного более элегантное, чем удерживание клавиши возврата:

$ gdb ./mycode
(gdb) break 1
Breakpoint 1 at 0x100000f08: file mycode.c, line 1.
(gdb) run
Starting program: mycode 

Breakpoint 1, main () at mycode.c:4
4        for(x = 0; x < 4; x++){
(gdb) next
5            printf("Example\n");
(gdb) [press return]
Example
4        for(x = 0; x < 4; x++){
(gdb) [press return]

Производительность не является проблемой (очевидно, она будет сильно замедлена из-за всего printf(), и это нормально). В идеале решением будет инструмент командной строки (альтернативно приложение с графическим интерфейсом пользователя, совместимое с OS X).

Возможно, использование будет примерно таким, как ..

$ viewlivec --delay 500 -- ./mycode -mycodes=arg --verbose
01: int main(){
02: int x;
03: for(x = 0; x < 4; x++){
04: printf("Example\n");
05: }
03: for(x = 0; x < 4; x++){
04: printf("Example\n");
05: }
03: for(x = 0; x < 4; x++){
04: printf("Example\n");
05: }
03: for(x = 0; x < 4; x++){
04: printf("Example\n");
05: }
06: }

Флаг --delay будет ждать 0,5 секунды между каждой строкой

(Возможно, об этом спрашивали ранее, но я не совсем понимал, что искать, поэтому ничего не нашел)

13.09.2009

Ответы:


1

Возможно, не идеально, но вы можете перейти в режим TUI (текстовый интерфейс пользователя), нажав 'c-x a', и перейти в режим одной клавиши, нажав 'c-x s'. В одноклавишном режиме нажмите 'n' для следующей команды.

Дополнительную информацию см. В руководстве по gdb: http://sources.redhat.com/gdb/onlinedocs/gdb_23.html

13.09.2009

2

Вам нужен DDD, который представляет собой графический интерфейс для GDB. Также: WinDBG подходит, если вы используете Windows.

13.09.2009

3

Я также не знаю ни одного инструмента для этого, но если вы собираетесь написать это самостоятельно, вы можете изучить возможность изменения / создания ловушки для утилиты покрытия кода. Например, gcov или lcov оба подсчитывают количество раз, когда строка выполняется, так что, конечно, вы можете изменить источник для печати из этой строки и спать вместо того, чтобы просто увеличивать счетчик.

13.09.2009

4

Учитывая комментарий NormD к этому ответу, мне интересно, есть ли функция это может быть особенностью Codewarrior или Chameleon.

13.09.2009

5

Я никогда не видел и не слышал о таком инструменте, однако подозреваю, что, поскольку GDB настолько встраиваемый, у него должен быть приличный API, который вы, вероятно, могли бы использовать для создания этого приложения (и если вы это сделаете, мне нужна копия!).

13.09.2009
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..