Unix环境高级编程 调试程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix环境高级编程 调试程序相关的知识,希望对你有一定的参考价值。

Unix环境高级编程 里的程序怎么在ubunt里调试啊 求具体步骤!!!
哥们 我学的是 Unix C......
不会jdb....
我学的是TC 最近刚开始转向UC的 所以不太会在UNix 下调程序

学java必然有一些先行课,和先行知识
包括基本的逻辑运算,计算机基础原理比如冯诺依曼体系二进制之类内容,然后就是学习java的基本语法,这期间不需要使用集成开发环境,用记事本或者editplus就行,教材用约薄的越好,一定要java基础,语法都通了,就可以开始做一些能用的东西了,这个时候就可以用eclipse了(顺便说一下jdk不是开放工具,是一组java的基础类和编译调试程序,虽然名字叫jdk,java develope kit但是实际是堆类,跟.net framwork一样),有了eclipse(一般要搭配Myeclipse插件)就可以开发一些复杂的桌面应用了,这个时候要做的就是熟悉面向对象的思想,然后学习htmljavascript,CSS这些网页基础知识

这些都准备好了就可以开始做传说中的J2EE程序了,所谓J2EE不是一个什么规范,他是jdk的另外一个版本,一般你下载的jdk叫做J2se就是java 2 standard edition,而j2ee是java 2 Enterprise edition,J2EE的develope kit用Myeclipse就行,里面有web工程都不用你操心了,当你开发j2ee工程时候需要用到一个容器来解析j2ee(就如同j2se的套件里面有编译工具一样)这个容器最方便的就是tomcat了

然后是UNIX,你根本不用学,在xp上开发好copy到unix就可以,跨平台,只要unix上装了unix的java虚拟机就能直接用了,如果要学的推荐使用VMware这个东西,可以在xp上虚拟出unix,linux,甚至是mac,而且最新版的VMware据说可以同时开4,5个虚拟操作系统都不会死机

推荐书,按我说的顺序先看基础,任何出版社都ok,然后看比基础后一些的(如果不想做桌面应用跳过也可以),然后看j2ee教程,最好有案例那种,哪本都可以,讲的都挺详细,然后专项看struts,Hibernate,spring的书

解释一下上面说那些词(其实你踏实下来看书都能找到答案,书里都会说)mvc是sun公司发明的一种编程的方式,就是做软件时候按照3曾来分类,m是modal模型层主要负责描述一些实例的属性并且留出对应的公共set,get方法,v是view视图层,用来给用户看的,c是控制层,控制一些方法去对m曾里的实例进行增删改查等操作

ant是一套部署工具,一般你调试以后要把工程部署一下,如果每次都手工做就太笨了,所以发明了ant

ejb是sun公司出的一套框架Enterprise java bean,到3.0以后才有人用,而且功能和ssh效果差不多,不多说了

“ssh=struts,hibernate,spring, 三个框架”引用别人说的,这个正确

struts是一个mvc框架,主要用jsp做视图层,struts的action类做控制层,struts的formbean做模型层(不过自己也要建立模型层方便和数据库交互)

hibernate是一套数据库持久化框架模型,用法也很简单,在Myeclipse里都集成了,没有特殊需求都用IDE生成就可以了,不过真实项目里生成好的要自己改一些地方才能用

spring是一套面向刻面和反转控制的框架,至于这两个是什么英文叫AOP和Ioc不赘述了,网上搜搜很多,而且看spring的书第一张一定会说这个

log4j是一套记录日志的java组件,用不用都行,struts里都集成了

cvs是做版本控制的一个工具Myeclipse里集成了

junit是一套用来做单元测试的工具类,Myeclipse里也集成比较复杂,不过以后到公司了,公司都会安排你来做测试,到时候他们怎么要求怎么做,中国的破公司很多都不做测试,跑通了就ok了
参考技术A 程序语言有很多很多的“品种”,1、先学:语法,运算符,逻辑表达式、流程控制2、函数肯定要懂啊,除了数学函数,每种程序语言都 有自己的专用函数库,还要学习自己定义函数
最好就是去饭客网络哪里工具多教程好地址百度网页搜索饭客网络第一个
参考技术B 真够了,GDB不会,怎么用C,你根本那就没有学习过 !

UNIX环境高级编程第七章

这一章主要知识点包括:程序启动与终止,进程终止exit与_axit,atexit函数。存储空间布局,深层嵌套出错跳出函数,资源查询与更改函数等内容。

技术分享

1.首先从内核传递命令行参数和环境变量值给c启动例程,然后c启动例程调用main函数,main调用其他函数。终止时,

可以使用_exit()函数或者_Exit()函数,直接调用内核结束。也可以调用exit()函数,先进行清理处理。(调用各终止处

理程序,标准I/O清理程序),然后再进入内核。

2.exit函数先调用各终止处理程序,再调用标准I/O流清理关闭工作:为所有打开流调用fclose函数。这会使所有缓冲输出数据被冲洗。

3.未定义的终止状态:(1)调用exit类函数没带终止状态(2)main函数return没有返回值的(3)main函数没有声明返回类型为整型的。

4.【atexit函数】

登记由exit自动调用的终止处理程序的集合。atexit登记程序的顺序与exit执行调用的顺序相反。void atexit(void)

5.c语言的存储空间布局

正文段:cpu执行的机器指令部分。可共享不可修改只读的;

初始化数据段:程序中需明确地赋初值的变量。

非初始化数据段:bbs段,内核将此段中数据初始化为0或空指针。

栈:自动变量以及每次函数调用时所需保存的信息都存放在此段中。

堆:动态存储分配。

6.共享库:程序第一次执行或第一次调用某个库函数时,用动态链接方法将程序与共享库函数相链接。

7.存储器分配函数

(1)malloc(2)calloc。分配若干个每个大小固定的存储空间。

(3)void *realloc(void *ptr, size_t newsize);//newsize是新的和旧的总长度

更改以前分配区的长度。如果往高位有足够的新分配空间,就直接在当前位置增加新空间。没有的话,

将当前内容与新分配内容一同放置到一个其他位置,删除原位置内容。所以不应分配指向他的指针

8.setjmp 与 longjmp

这是一组一同出现使用的函数。

setjmp函数确定的是出错之后返回到的main函数中的位置,longjmp是若出错,则从该longjmp处返回到main函数中的setjmp处。二者关联确定是同一组的标志是setjmp的参数与longjmp的第一个参数,需要是同样值,longjmp的第二个参数则用来区分其与setjmp相对应的longjmp里的不同出错位置,所以需要设定为不同整数值进行区分。

如果需要返回setjmp保存原来的值,就需要在变量前加volatile属性,优化执行就可以实现其值不回滚。

(1)volatile:作为关键字,确保本条指令不会应该编译器优化而忽略,而是每次直接读值。进行优化以后,volatile从寄存器取值,而不是存储器。

9.getrlimit和setrlimit函数:得到和设置资源限制。      

 

以上是关于Unix环境高级编程 调试程序的主要内容,如果未能解决你的问题,请参考以下文章

自学:Unix环境高级编程 第一章 Unix基础知识

关于unix环境高级编程Linux程序设计两部书浅谈

Unix高级编程之进程环境

UNIX环境高级编程第九章

unix高级环境编程看了能写项目吗

Unix环境高级编程线程