zoukankan      html  css  js  c++  java
  • C++ 编译问题,debug.

    1)如果是动态库。

    比较顺利的编译方式 1,选择动态库,2.加入-fPIC   。3.库之间的调用,也加上-l 库名。

    3)gdb,最起码要掌握基本用法。才比较好排错。不然呢。。。。

    gdb file 开始调试。

    gdb catch throw  一般都是抛出错误,开始使用gdb吧。 所以捕捉异常必须要。而cath catch有时候是不行的,因为如果没有捕捉错误,那么已经到了最上层的堆栈,就不太好查找错误。

    b main .

    b 27 .设置断点。

    c 继续。

    n

    r 运行。

     bt 好了。到异常了。查看堆栈吧。ide解决不了的。这里可以一目了然了。这里表示当前的堆栈情况。那么基本就可以万能解决异常问题了。

    最起码的这几点,应该要会。开始不会用。感觉好难的样子。其实只用基本的话。比任何知识点都简单。比html 还简单。。。。上手10分钟。

    4) 关于include.

    感觉这个简单的一个宏都是一个坑。

    如果运行项目根本不需要某个头文件。只是类库需要。

    而类库使用-l编译的。所以直接打上了头文件名字。

    但是到了运行项目编译的时候。又要重新加上。

    所以

    include ,

    对于运行主项目来说。全部加上(尽管只是类库需要,因为类库只打上了头文件的名字,主项目一层一层寻找的时候,只找到头文件名字,而并不能感知当时类库编译时,所设定的搜索路径,c++是单文件编译)。

    这样下面的类库就可以自己include 自己的。只打上头文件名字。

    link

    对于主项目来说。全部加上。(尽管可能主项目只需要某个高层类库。但是比如多线程,类库用到了,还是需要主项目来连接多线程的类库的)

    所以类库可以不link所需要的基础类库?只需要include ?

    5)又碰到一个坑,

    类库修改了。忘记编译,调用类库的时候。连参数的值都传错,返回时候,居然把调用函数的栈都清空了。

    编译还是要加项目依赖,来编译。

  • 相关阅读:
    四种常见的 POST 提交数据方式
    HTTP 协议中的 Transfer-Encoding
    一些安全相关的HTTP响应头
    密钥交换(密钥协商)算法及其原理
    SSL/TLS协议详解(下)——TLS握手协议
    SSL/TLS协议详解(中)——证书颁发机构
    SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法
    Maven的-pl -am -amd参数
    关于Sidecar Pattern
    Java Reference核心原理分析
  • 原文地址:https://www.cnblogs.com/lsfv/p/6551674.html
Copyright © 2011-2022 走看看