否则将出现错误,比如划三角形,必须让三角形的斜率为直线,不然不能得到预期的结果。
2. 对于变量的定义,如果在条件语句里面必须放在语句最前面,如果在整个函数的里面,
必须放在整个函数的最前面。
3. GDB来调试已经生成的可执行程序hello.命令如下:Gdb hello ,参数-d指示源代码所
在的目录去搜寻。一旦出现GDB的命令提示符(gdb),就表明GDB已经准备好接收来自用户的各种调试命令了。如果想在调试环境下运行这个程序,可以使用GDB提供的“run”命令,而程序在正常运行时所需的各种参数可以作为“run”命令的参数传入,或者使用单独的“set args”命令进行设置。如果在执行“run”命令时没有给出任何参数,GDB将使用上一次“run”或“set args”命令指定的参数。如果想取消上次设置的参数,可以执行不带任何参数的“set args”命令。
GDB是一个源代码级的调试器,使用“list”命令可以查看当前调试对象的源代码。该命令的通用格式为“list [m,n]”,表示显示从m行开始到n行结束的代码段,而不带任何参数的“list”命令将显示最近10行源代码。
要根据行号设置断点,可以使用“ break linenum”命令。要根据函数名设置断点,则应该使用“break funcname”命令。
条件断点允许当一定条件满足时暂时停止程序的执行。它对于调试来讲非常有用。设置条件断点的正确语法如下:
break linenum if expr break funcname if expr
使用“continue”命令继续执行程序,直到遇到下一个断点。如果在调试时设置了很多断点,可以随时使用“info breakpoints”命令来查看设置的断点。此外,开发人员还可以使用“delete”命令删除断点,或者使用“disable”命令来使设置的断点暂时无效。被设置为无效的断点在需要的时候可以用“enable”命令使其重新生效。
为了单步跟踪代码,可以使用单步跟踪命令“step”,它每次执行源代码中的一行。
4、程序调试过程中,如果出现segment,一般来说是指针没有赋值,找不到原型。比如线程里面如果要调用screen_mm,那么必须传递参数screen_mm,而且需要在线程里面定义参数。 5、如果线程里面用到串口的操作,则最好把串口初始化程序放到线程里面进行。也可以把初始化作成模块,这样不会影响串口的收发数据。如果将串口初始化放到主程序里面,则最后将初始化程序放在线程的属性定义和建立线程之前,否则其他地方可能导致串口收发数据产生问题。还有对于串口操作的定义最好放在所有变量定义的最前面。 6、对于段错误这种问题。可以分析以下原因:
(1):指针非法,比如使用没有初始化的指针(没有为此指针指向的对象分配空间),或着Free掉之后再次使用。
(2):数组访问越界,访问的元素下标超过数组围长
(3):缓存溢出,对于这种while(1) {do}的程序,这个问题最容易发生,多此sprintf或着strcat有可能将某个
buff填满,溢出,所以每次使用前,最好memset一下,不过要是一开始就是段错误,而不是运行了一会儿出现的,(3)的可能性就比较小。
因篇幅问题不能全部显示,请点此查看更多更全内容