Если вы вызываете отладчик из командной строки, вы можете просто добавить аргументы командной строки, и отладчик передаст их в вашу программу.
Если вы используете IDE, должно бытьспособ задать аргументы, которые будут переданы вашей программе (например, в Visual Studio он находится в свойствах проекта в разделе «Отладка / Аргументы команд»).
Однако, если я нахожусь в сеансе отладкии я хочу отлаживать, используя различные аргументы командной строки, мне больно постоянно редактировать свойства проекта.По этой причине я часто проверяю, чтобы мой argc
/ argv
выполнял синтаксический анализ в функции, которая принимает параметры вместо непосредственного действия на argc
/ argv
, и был условно скомпилирован в отладочный код, который передаетсяжестко запрограммированная строка командной строки (мне проще изменить строку в исходном файле, чем редактировать свойства проекта среды IDE), или у меня есть запрос кода отладки для аргументов командной строки.
У меня есть небольшой удобныйПодпрограмма, которая будет анализировать строку в массиве argv
, тогда я могу передать это подпрограмме, которая обычно разбирает argc
/ argv
.
Так что все может выглядеть примерно так:
int main( int argc, char** argv)
{
if (debugging) {
char** dbg_argv;
int dbg_argc = argcargv( &dbg_argv, "dummyarg0 my debugging command --line");
parse_options( dbg_argc, dbg_argv);
}
else {
parse_options( argc, argv);
}
// etc...
}
Это не совсем красиво, но я считаю это более удобным, чем возиться со свойствами проекта снова и снова.