我知道答案,我把它放在这里让其他人看到它
如果你使用eclipse CDT,你可能会理解eclipse不是一个调试器,它只是一个应用程序前端,特别是GDB.因此,在调试C++程序时,您实际上只是以更舒适的方式使用GDB.如果您必须在eclipse CDT中调试多线程程序,您会发现事情很快就会变得忙乱,因为当您遇到断点时,所有线程都会停止,当一个人尝试在特定线程中执行一行时,它也会运行其他线程.为了使它正常工作,线程必须能够任意和异常地运行 - 这样当程序员执行单行时,它只执行特定的线程.
因此,默认情况下,默认情况下gdb的设置会关闭"scheduler-locking".如果您调试多线程应用程序,您将理解这必须在GDB中启用,以便实现所需的行为.如何运行此命令:
set scheduler-locking on
Run Code Online (Sandbox Code Playgroud)
在eclipse CDT中的GDB中?
目前,我正在使用一个示例驱动程序来学习,并从中我自己的自定义驱动程序.mmap代码几乎完全相同,除了我允许用户管理他们自己的请求大小并围绕它进行内存分配以及我在/ dev中自动创建char设备这一事实.
为了解释上下文,对于我的用例,我想缩小我遇到的问题.dma_mmap_coherent在使用kmalloc内存时可以正常工作,但是当我有一个保留的物理地址区域时,我想使用remap_pfn_range,它可以安静地工作,而dmesg不会报告任何错误,但是当我去阅读时,无论如何我写在那里它总是返回0xff字节.无论我在ioremap内存之后使用iowrite和ioread在内核中使用还是尝试使用小型mmap'ing用户态测试在userland中编写,都是如此.
我已经做了尽可能多的关于这个主题的研究.我能找到的有关remap_pfn_range的文档的是kernel.org页面,而一些内核gmain邮件列表存档在remap_pfn_range上,取代了remap_page_range.至于dma_mmap_coherent,我能够找到更多,包括来自linux档案的演示文稿.
最终必须有所不同; 似乎有很多不同的方法将内核内存映射到用户区.我的具体问题是:dma_mmap_coherent和之间有什么区别remap_pfn_range?
编辑它可能很好地提供一般概述将内核内存映射到用户区的方法,包括如何在内核驱动程序mmap回调中使用不同的apis.
所以,我在mac-osx上使用python3.2和灯泡,使用rexster和orientdb.细节:
orientdb - 从他们的页面下载标准
〜/工作区/ orientdb社区-1.7-RC1
运行服务器, ./bin/server.sh
database - orientdb database~/databases/orientdb/dev-db-01
rexster - 来自github git clone的标准结账git://github.com/tinkerpop/rexster.wiki.git~/ workspace /
配置/ rexster.xml:
...
<graph>
<graph-enabled>true</graph-enabled>
<graph-name>dev-db-01</graph-name>
<graph-type>orientgraph</graph-type>
<graph-location>local:*<path to...>*/databases/orientdb/dev-db-01</graph-location>
<properties>
<username>admin</username>
<password>admin</password>
</properties>
<extensions>
<allows>
<allow>tp:gremlin</allow>
</allows>
</extensions>
</graph>
...
Run Code Online (Sandbox Code Playgroud)
Python代码:
from bulbs.rexster import Graph
from bulbs.config import Config
config = Config("http://localhost:8182/dev-db-01/", username="admin", password="admin")
g = Graph(config)
Run Code Online (Sandbox Code Playgroud)
问题:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/bulbs/rexster/graph.py", li ne 56, in __init__
super(Graph, self).__init__(config) File "/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/bulbs/base/graph.py", line …Run Code Online (Sandbox Code Playgroud) 是否可以让 Junit 规则仅适用于特定测试?如果是这样,我该怎么做?
下面的代码举例说明了我想要做什么:每次我有@Rule 时,我都希望下面的方法具有已注释的特定规则以运行它。我只希望该规则与相应的测试一起运行。我不希望任何其他测试受到规则的影响。
在这种情况下,当我运行这些测试时,我看到其中一个测试 EmptyFileCheck 给出的文件 DNE 不存在,但是我为该函数使用了单独的注释,所以我认为它会以不同的方式运行上下文,提供 Empty,但 DNE 直到被使用。
import static java.lang.System.in;
import static java.lang.System.setIn;
import static org.junit.Assert.fail;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;
import java.nio.channels.Pipe;
import static org.hamcrest.core.AllOf.allOf;
import org.hamcrest.Matcher;
import org.hamcrest.core.AllOf;
import static org.hamcrest.Matchers.*;
import org.hamcrest.text.StringContains;
import org.hamcrest.text.StringEndsWith;
import org.hamcrest.text.StringStartsWith;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.TextFromStandardInputStream;
import org.junit.runner.RunWith;
public class …Run Code Online (Sandbox Code Playgroud) 所以,我到处寻找一个好的彩虹括号插件,它会给不同级别的括号提供不同的颜色.我真的很喜欢我发现的这对情侣,因为他们在突出正确的事情的同时做得很好.它支持的不仅仅是括号; V形,括号和括号都突出显示,我非常喜欢.
好像有很多插件可供选择!; 我目前正在使用oblitum,因为他针对深色背景进行了优化(我经常直接从外壳工作).
所以,按照github上该插件的提示,我的"永远在线"片段.vimrc.但是当always块上面的"语法启用"时,它不会{}显示为cpp文件的突出显示.当总是在块上时syntax enable,折叠不起作用.我认为插件的本质使它能够做到这一点; 它通过文件并添加着色信息.我注意到如果我:syntax enable在加载文件后使用该命令时它不能识别折叠,那么它确实识别折叠.但在这一点上,它消除了彩虹括号上的颜色.
在我.vimrc,我有以下相关的路线:
syntax enable
set foldmethod=syntax
set foldenable
set foldlevel=100
let g:rainbow_operators=2
au FileType c,cpp,objc,objcpp call rainbow#activate()
Run Code Online (Sandbox Code Playgroud)
我认为,通过查看vim附带的语法文件,例如c.vim,您可以看到某些块被注释为折叠.我敢打赌,如果你能写一个基于它的正则表达式,你可以将字符识别为句法组.然后你可以为它定义一个colorscheme.事实上,彩虹插件实际上是在调用"syn region"命令,所以我认为这条路线非常可行,我只是不知道用vim脚本知道.
任何人都可以帮我修改插件或提出一个脚本或同时实现这两者的东西吗?
我有一个自定义驱动程序,我写的是为了便于将精确硬件RAM内存地址自定义映射到用户区.我试图测试两个进程之间共享到同一硬件地址的公共内存mmap,这有助于每一方都能看到的可见内存操作.
我的代码大概是这样的:
//placement: in a mmap callback to a file_operations facilitated
// character device
//phys_addr - a variable that I will ioremap for a virtual addr
virtaddr = ioremap(phys_addr, size);
if (!virtaddr) {
printk(KERN_INFO "could not remap page!");
goto out;
} else {
printk(KERN_INFO "attempting write");
*((int *)virtaddr) = 0xdeadbeef;
//wmb(); <--- I haven't tried this yet
}
Run Code Online (Sandbox Code Playgroud)
事实证明,我认为问题可能是缺少写入障碍来强制缓存刷新内存.由于操作系统的具体内容超出了本问题的范围,我必须在某些特殊硬件上启动测试.我不认为写入障碍适用于主存储器或ram,就像它对设备寄存器或设备存储器一样(例如:SSD上的缓存等).所以,我没有测试过wmb,但我只想在那里提出我的问题.我通过Linux设备驱动程序3一书搜索了一些,我已经执行了我的代码; 我要拉的片段是事实上执行,我知道它,因为我可以看到printk.驱动程序执行代码,但后来似乎继续.最后,有一段类似的代码片段在ioremap上执行一个共同的硬件内存,然后尝试从中读取.该读取不包含我写给它的值.
为什么?
我已经遵循了不少的文件,并试图重用一个例子,但我不能让我的代码工作.
我的Cargo.toml看起来像这样:
[package]
name = "Blahblah"
version = "0.3.0"
authors = ["ergh <derngummit@ahwell.com"]
[dependencies]
[[bin]]
name = "target"
path = "src/main.rs"
[features]
default=["mmap_enabled"]
no_mmap=[]
mmap_enabled=[]
Run Code Online (Sandbox Code Playgroud)
我想根据我传递给cargo build命令的功能配置,使用与mmap不同的缓冲区来本地测试我的代码.我的代码中有这个:
if cfg!(mmap_enabled) {
println!("mmap_enabled bro!");
...
}
if cfg!(no_mmap) {
println!("now it's not");
...
}
Run Code Online (Sandbox Code Playgroud)
编译器没有看到任何一个if语句体中的代码,所以我知道这两个cfg!语句都在评估为false.为什么?
我在Rust 0.10中读过条件编译?我知道这不是一个完全重复,因为我正在寻找一个有效的例子.
基本上,在工作中我有一个dhcp地址分配为:
eth0 Link encap:Ethernet HWaddr 5c:26:0a:5a:b8:48
inet addr:10.10.10.193 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: <addr here>/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3591236 errors:0 dropped:0 overruns:0 frame:0
TX packets:2057576 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3449424352 (3.4 GB) TX bytes:384131635 (384.1 MB)
Interrupt:20 Memory:e2e00000-e2e20000
Run Code Online (Sandbox Code Playgroud)
有了这个,我的主人,可以很好地连接到互联网.但是我的码头机器都不能在工作时连接到互联网.他们的配置如下:
docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::5484:7aff:fefe:9799/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:117799 errors:0 dropped:0 overruns:0 frame:0
TX packets:170586 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4858816 …Run Code Online (Sandbox Code Playgroud) 标题说明了一切;
"mvn compile"产生大量错误,这是第一个:
[错误] $ HOME/workspace/JavaExamplePBServiceCall/src/main/java/example/ServicecallPiqi.java:[13,23]错误:';' 预期
手动编译产生100个错误,这是第一个:
javac -cp $ HOME/.m2/repository/com/google/protobuf/protobuf-java/2.4.1/protobuf-java-2.4.1.jar ServicecallPiqi.java
ServicecallPiqi.java:535: error: cannot find symbol
public static com.google.protobuf.Parser<params> PARSER =
^
symbol: class Parser
location: package com.google.protobuf
Run Code Online (Sandbox Code Playgroud)
ServicecallPiqi.java的开头:
package example;
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: pb_piqi_out/servicecall.piqi.proto
public final class ServicecallPiqi {
private ServicecallPiqi() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
}
/**
* Protobuf enum {@code cast_type}
*/
public enum cast_type implements
// ^^^^^^^^^^^^^ OFFENDING line
Run Code Online (Sandbox Code Playgroud)
这是我的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" …Run Code Online (Sandbox Code Playgroud) 如果要remap_pfn_range在实现mmap的自定义内核驱动程序中使用该函数,您就知道必须获取'mm信号量'.但目前尚不清楚如何通过我公开发现的例子来做到这一点.我认为编辑可用的示例会对社区有所帮助,我愿意这样做,但我不知道从哪里开始.
根据文档:只有在调用时保持mm信号量,这才是安全的.
我有一个我想要迭代的可索引类型.它由一些元数据和一个数组组成.我需要首先迭代元数据的字节,然后迭代到数组的字节.根据我的理解,迭代器不能在trait实现的本地存储.我认为这非常混乱,我不希望我的数据类型因满足无关的影响而变得混乱.
impl Iterator for IndexableData {
type Item = u8
let index : isize = 0;
fn next(& mut self) -> Option<Item> {
if self.index > self.len() { None }
if self.index > size_of::<Metadata> {
Some (self.data[index - size_of::<Metadata>])
}
Some (self.metadata[index])
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我认为实现应该是这样的.的index变量属于迭代器性状.不是我的IndexableData类型.我怎样才能做到这一点?