我需要调试我的程序,问题是这个程序需要几个参数。我怎样才能调试带参数的程序?我可以以某种方式在运行时修改argc和argv参数吗?
答案 0 :(得分:5)
最好的方法不是在运行时修改参数,而是调试具有所需参数的实例。
对于Windows,您可以在Visual Studio中执行此操作,如下所示:
或者从命令行正常启动程序,然后附加调试器。
答案 1 :(得分:2)
如果从命令行调用调试器,只需添加命令行参数,调试器就会将它们传递给您的程序。
如果您正在使用IDE,则应该有一种方法来设置将传递给您的程序的参数(例如,在Visual Studio中,它位于“Debugging / Command Arguments”下的项目属性中)。
但是,如果我在调试会话中并且我想使用各种不同的命令行参数进行调试,我发现必须不断地编辑项目属性。出于这个原因,我经常会确保在一个函数中进行argc
/ argv
解析,该函数接受参数而不是直接对argc
/ argv
起作用,并且有条件地在调试代码中编译,该代码传递一个硬编码的命令行字符串(我发现修改源文件中的字符串比编辑IDE的项目属性更容易)或者我有调试代码提示用于命令行参数。
我有一个方便的小例程,它会将字符串解析为argv
- 样式数组,然后我可以将其传递给通常解析argc
/ argv
的例程。 / p>
所以事情看起来像是:
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...
}
它不是很漂亮,但我发现它比一遍又一遍地搞乱项目属性更方便。
答案 2 :(得分:1)
如果您使用的是GDB:
gdb ./a.exe
> break main
> run arg1 arg2 arg3 etc..