Есть ли способ контролировать поток кода C ++ извне? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть пример кода:

#include<iostream>
main()
{
    int i = 10; //Line 1
    std::cout<<" i : "<<i; //Line 2
}

Я хочу как-то вставить другое утверждение (скажем, еще один std :: cout) между строкой 1 и строкой 2.

Прямой способ - изменить исходный код и добавить необходимую строку. Но для моего компиляции исходного кода требуется много времени, поэтому я не могу позволить себе часто менять код. Поэтому я хочу автоматический способ, чтобы я мог выполнять любой оператор в любой функции извне, чтобы при нажатии на эту функцию он выполнял мой новый заданный оператор.

Я не уверен, возможно ли это или нет. Но любое направление в написании исходного кода таким образом, чтобы моё требование могло быть выполнено, было бы полезно.

[для отладки]

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

В gdb вы можете многое сделать, чтобы изменить поведение вашей программы, когда она достигает точки останова без остановок.Команда печати также может быть использована для изменения значений, например, print i=0 фактически устанавливает i в ноль.

Просто помните, что все эти изменения и взломы необходимо перенести обратно в исходный код и протестировать снова!За прошедшие годы я потерял много отличных правок, выполняя встроенные хаки в коде, а затем выходил без проверки изменений.

0 голосов
/ 29 марта 2019

Если вы хотите, чтобы выполнялся новый код C ++, его сначала нужно скомпилировать.Я не думаю, что вы можете избежать этого.Однако вы можете попытаться сократить время компиляции, используя различные методы, такие как использование средств защиты заголовков и выборочный подход к заголовкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...