12-30计划

0、eclipse字体等配置,快捷键

0.1 字体,Window –> Preferences –> General –> Appearance –> Colors and Fonts,可以选择windows自带的consolas 16号看着比较合适,试试中文,如果不支持中文可以选择网上的YaHei Consolas (sureCRT用此字体比较合适否则中文会乱码)

0.2 文件默认编码 windows->Preferences->general->Workspace->Text file encoding,windows->Preferences->general->Content Types 右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。其他java应用开发相关的文件 如:properties、XML等已经由Eclipse缺省指定,分别为ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定。

0.3 行号  Window –> Preferences –> Editors–> Text Editors

0.4 快捷键http://www.blogjava.net/action/articles/17339.html


1、eclipse的jar工程和demo工程的联合调试编译,java的debug版本和release版本的区别

1.1 添加jar包源文件到demo的工程


  • Right-click on the jar referenced in your project, select 'properties'
  • From 'Java Source Attachment' click 'Workspace...' button
  • Select the 'src' folder from the jar project in your workspace

    or if you want to do more steps:

    • Right-click on project, select 'properties'
    • From 'Jave Build Path' select 'Libraries' tab
    • Expand (click '+') the jar you want to link source to
    • Click 'Source attachment' (it should be saying 'Source attachment: (None)')
    • Press the 'Edit...' button
    • Follow from the second point in the shorter steps above

    1.2 javac的debug和release的区别:debug和releas版本对运行性能影响不大,只要影响的生成的class文件的大小,应为包含了调试信息

    javac的一些重要参数: http://stackoverflow.com/questions/8613535/does-java-have-debug-and-release-build-mode-like-c
        -g-Generate all debugging information, including local variables. By default, only line number and source file information is generated.在class文件中生成所有调试信息,包括局部变量的信息。默认的话,只写入源码的行号和源文件信息。
        -g:none-Do not generate any debugging information.不生成任何调试信息。
        -g:(lines,vars,source)-只生成部分调试信息(源码行号,变量,源文件信息)。那我们在分别介绍下lines,vars,source的含义。
             lines:将源文件中的行号信息写到Class文件中,此属性用于在Class文件中生成方法字节码流偏移量和源代码行号之间的映射关系。如果我们不指定此属性的话,我们将在堆栈异常信息中看不到打印的行号。
             vars:Local variable属性建立了方法的栈帧中局部变量部分内容与源代码中局部变量名称和描述符之间的映射关系。有了这个属性,调试时,我们才可以看到变量的值。
             source:编译时指定了这个属性,会把源文件的属性信息如源文件名称写入class文件。 
         如果你不指定行号信息的话,你在ide中都无法插入断点。这些调试信息在我们调试程序的时候非常重要。不过这些编译选项通常在ide中如eclipse中早已默认了。打开eclipse,依次打开菜单选项:Window->Preferences->Java->Compiler,可以看到页面的下方有一个Classfile Generation,默认是四个选项都选的。

    http://xuwb1220.iteye.com/blog/1147324

    对应ant中的设置http://ant.apache.org/manual/Tasks/javac.html 参数 debug和debuglevel

    java调试的原理http://www.ibm.com/developerworks/cn/java/j-lo-jpda1/

    2、ndk的so文件的组成symbol strip的概念,debug和release版本的区别

    2.1 gcc -g选项与 ld -rdynamic意义,调试信息的生成,如何读取,objdump readelf

    http://stackoverflow.com/questions/8623884/gcc-debug-symbols-g-flag-vs-linkers-rdynamic-option

    2.2 elf文件中symbol

    https://blogs.oracle.com/ali/entry/inside_elf_symbol_tables

    2.2.1 symbol作用 理论上编译完代码中函数名变量名等对于机器代码已经没有作用,可以完全丢弃了,实际还是会存储一些信息在二进制的文件中,处于如下考虑

    #在连接的时候,linker需要根据变量函数名进行连接,

    #debugger的时候,需要symbol显示

    symbol在生成的二进制文件中分为两种 (两个segment) symtab dynsym

    symtab 的生成对应于gcc 的 -g选项

    dynsym的生成对应于linker的 -rdynamic选项,参见上面的stackoverflow的连接

    dynsym是symtab的一个子集

    出现两个表的原因是有些历史的因素,参见oracle的连接

    基本原因包含两个方面,一,调试的信息由于运行时时不需要的,所以可以从可执行的程序中strip掉,在loader加载可执行程序时也不会加载调试信息

    按照运行时是否加载二进制的文件中分为两部分allocable 和non-allocable,allocable是在程序运行时加载到内存的,non-allocable是不需要加载到内存的,不是运行必须的

    toolchain中的strip程序就是去除二进制文件中的non-allocable的部分的(参见http://www.lenky.info/archives/2013/04/2261

    完整的symtab包含了大量的debug数据linker和debugger使用,因为不需要加载到内存,这些在动态链接库出现之前一直运行的很好,很合理,动态链接库的出现带来了问题

    动态链接库在运行时需要一部分non-allocable的信息,这是就面临了一些问题,要不把所有的symtab变为allocable,或者新建一个allocable的segment,显然新建一个symtab的子集仅仅包含动态链接所需的信息,更加有时间和空间和效率,这样dynsym segment就诞生了,dynsym是allocable的。

    这些信息可以通过objdump 和readelf来获得

    readelf -f

    so断点生效延迟http://visualgdb.com/documentation/appstartup

    调试时显示run-as: Package 'com.example.hellojni' has corrupt installation问题

    http://www.mobibrw.com/?p=389

    /data目录 的others用户是不能有读写权限的,否则就会报该错

    3.、android tombestone文件的生成机理,如何调试

    4、svn基础

    5、android获取堆栈的办法

    http://blog.csdn.net/freshui/article/details/9456889

    ps:一个 beyond compare4 注册码

    H1bJTd2SauPv5Garuaq0Ig43uqq5NJOEw94wxdZTpU-pFB9GmyPk677gJ
    vC1Ro6sbAvKR4pVwtxdCfuoZDb6hJ5bVQKqlfihJfSYZt-xVrVU27+0Ja
    hFbqTmYskatMTgPyjvv99CF2Te8ec+Ys2SPxyZAF0YwOCNOWmsyqN5y9t
    q2Kw2pjoiDs5gIH-uw5U49JzOB6otS7kThBJE-H9A76u4uUvR8DKb+VcB
    rWu5qSJGEnbsXNfJdq5L2D8QgRdV-sXHp2A-7j1X2n4WIISvU1V9koIyS
    NisHFBTcWJS0sC5BTFwrtfLEE9lEwz2bxHQpWJiu12ZeKpi+7oUSqebX+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值