小编Viv*_*oel的帖子

在valgrind中可能失去什么意味着什么

我有很多可能从valgrind输入.那是什么意思 ?因为我正在使用sqlite并且它经过了很好的测试.我不认为这些是正确的条目.我做错了什么?

 16 bytes in 1 blocks are possibly lost in loss record 30 of 844
    ==23027==    at 0x4A05E1C: malloc (vg_replace_malloc.c:195)
    ==23027==    by 0x6525BE: sqlite3MemMalloc (in app_mem.out)
    ==23027==    by 0x63C579: mallocWithAlarm (in app_mem.out)
    ==23027==    by 0x63C904: sqlite3DbMallocRaw (in app_mem.out)
    ==23027==    by 0x6886D6: codeOneLoopStart (in app_mem.out)
    ==23027==    by 0x68A9C8: sqlite3WhereBegin (in app_mem.out)
    ==23027==    by 0x68CC9E: sqlite3Select (in app_mem.out)
    ==23027==    by 0x6A8644: yy_reduce (in app_mem.out)
    ==23027==    by 0x6AAEAC: sqlite3Parser (in app_mem.out)
    ==23027==    by 0x6AB357: sqlite3RunParser (in app_mem.out)
    ==23027==    by 0x6ADF84: sqlite3Prepare (in …
Run Code Online (Sandbox Code Playgroud)

valgrind memcheck

6
推荐指数
3
解决办法
1万
查看次数

C++字符串使用最大缓冲区分配?

我宣布一个变量 string s;

s = "abc";现在它有3个字符缓冲区.

s = "abcd" 它有4个字符的缓冲区.

现在是第三个声明之后

s = "ab" 问题是它会保留4个字符的缓冲区还是会重新分配2个字符的缓冲区?

如果它将分配2个字符缓冲区有任何方法我可以告诉它保持分配的最大缓冲区.

那么它是否保留了最大大小的缓冲区?

s = "ab"
s="abc"
s="a"
s="abcd"
s="b"
Run Code Online (Sandbox Code Playgroud)

现在它应该保持4的缓冲区.

那可能吗?

c++ string stl

6
推荐指数
2
解决办法
471
查看次数

在Kohana创建助手3.1

我正在关注文档http://docs.kohanaphp.com/general/helpers.但这些步骤在kohana 3.1中不起作用.我在kohana 3.1中找不到任何关于助手的文档.我如何在kohana中创建自己的助手类?

php kohana-3

5
推荐指数
2
解决办法
3180
查看次数

url :: redirect in kohana 3.1

url::redirect在kohana中找不到功能3.1
这个功能的新名称是什么?(如果它仍然存在!)

php kohana

5
推荐指数
1
解决办法
8984
查看次数

带包装的CMAKE RPATH

我正在使用cmake创建包

我有以下结构

bin/
    bin1
lib/

    lib1
    lib2
Run Code Online (Sandbox Code Playgroud)

其中lib1和lib2是外部动态库.如何设置RPATH以便它自动链接lib1和lib2?

rpath cmake

5
推荐指数
1
解决办法
9467
查看次数

GDB附加到删除可执行文件的进程

我有运行进程,但它的可执行文件已被删除.如果我尝试附加gdb,我得到以下错误

/home/vivek/binary/releases/20120328101511/bin/app.exe (deleted): No such file or directory.
Run Code Online (Sandbox Code Playgroud)

如何将gdb附加到此进程?

示例测试用例:源代码:

#include<stdio.h>
#include<stdlib.h>
int main(){
  for (;;){
    printf("Sleeping");
    sleep(1);
  }
}
Run Code Online (Sandbox Code Playgroud)

编译它

 gcc main.cc -o a.out
 gcc main.cc -o b.out
Run Code Online (Sandbox Code Playgroud)

运行./a.out

现在从不同的终端删除a.out.和fire gdb附加pgrep a.out文件b.out它不起作用.

GDB显示以下错误:

/tmp/temp/a.out (deleted): No such file or directory.
A program is being debugged already.  Kill it? (y or n) n
Program not killed.
Run Code Online (Sandbox Code Playgroud)

linux gdb

5
推荐指数
1
解决办法
3886
查看次数

分析花费在 I/O C++ 上的时间

我有一个需要 11 秒的函数。我想分析它在 I/O 上花费了多少时间。是否有任何工具可以分析函数内部的 I/O 时间花费?这可以给静态像

Total Time  I/O TIME Function Name
x           y        f  
Run Code Online (Sandbox Code Playgroud)

c++ linux profiling

5
推荐指数
1
解决办法
1367
查看次数

GIT 从“git describe”的输出中检出代码

我正在考虑使用git describe来生成自动版本号。正如这里的建议。

我的问题是,如果我得到 o/p 的git describeas v2.0-64-g835c907,我将来如何使用 git 签出该特定修订号?

git git-checkout git-describe

5
推荐指数
2
解决办法
1059
查看次数

MySQL C++连接器中的内存泄漏

我正在使用MySQL C++连接器.Valgrind显示每个连接泄漏192个字节.它只是在线程环境中泄漏内存而没有线程,它没有泄漏任何内存.我做错了什么?我是否需要调用其他一些功能进行清理?示例代码:

#include <pthread.h>
#include <iostream>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>

using namespace std;

void* test(void* arg) {

  try {
    sql::Driver *driver;
    sql::Connection *con;
    /* Create a connection */
    driver = get_driver_instance();
    con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
    /* Connect to the MySQL test database */
    con->setSchema("test");
    delete con;
  } catch (sql::SQLException &e) {
    cout << "# ERR: SQLException in " << __FILE__;
    cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << …
Run Code Online (Sandbox Code Playgroud)

c++ mysql mysql-connector

5
推荐指数
1
解决办法
2900
查看次数

gdbserver从远程文件加载符号表

我正在尝试使用gdbserver ...
我有一个/user/bin/foo使用pid运行二进制路径的应用程序19767

在远程启动gdbserver:

gdbserver  --remote-debug --multi 0:12347 
Run Code Online (Sandbox Code Playgroud)

在客户端上启动gdb并将其连接以删除服务器

target extended-remote 192.168.1.84:12347
Run Code Online (Sandbox Code Playgroud)

在pid上附加了gdb

attach 19767
Run Code Online (Sandbox Code Playgroud)

表明:

warning: Could not load vsyscall page because no executable was specified
try using the "file" command first.
0x00007f207550043c in ?? ()
Run Code Online (Sandbox Code Playgroud)

另外,它显示的当前线程信息不正确。像信息线程显示1个线程,但我的应用程序有10个线程-

(gdb) info threads
* 1 Thread 19767.19767  0x00007f207550043c in ?? ()
Run Code Online (Sandbox Code Playgroud)

如何要求gdb从远程文件加载符号/user/bin/foo?如何使其显示正确的信息?

gdb gdbserver

5
推荐指数
2
解决办法
5219
查看次数