现在有gdb和binutils要调试从二进制分离调试信息的支持.可以在以下位置找到描述此内容的文档:
经过一些实验,我能够gdb使用build-id和debug-link方法获得(7.6)查找调试信息.这里有两个gdb片段,分别使用build-id和debug-link方法显示调试器在非标准位置查找调试信息:
(gdb) set debug-file-directory .
(gdb) file uWithBuildId
Reading symbols from /home/peeterj/build-id/uWithBuildId...Reading symbols from /home/peeterj/build-id/.build-id/2d/41caac1bcbeb65255abc3f35624cf9ed37791a.debug...done.
Reading symbols from /home/peeterj/build-id/uWithDebugLink...Reading symbols from /home/peeterj/build-id/uWithDebugLink.debug...done.
Run Code Online (Sandbox Code Playgroud)
要创建我用的调试信息的文件objcopy和strip.我在下面列出了这些命令的详细信息以供参考.
但是,我正在考虑这个问题的原因是希望能够构建我们所有的产品代码-g.目前,如果我们尝试,这会破坏调试器,因为我们的shared-lib太大而且重定位被截断以适合以下消息:
/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../lib64/crtn.o:(.debug_aranges+0x6): relocation truncated to fit: R_X86_64_32 against `.debug_info'
Run Code Online (Sandbox Code Playgroud)
(以及随后的链接失败)
有没有人知道如何做到以下之一:
ld生成二进制文件的命令中最终的.o和.a ).ld链接而不在二进制本身中包含此调试信息,并生成可以使用build-id或debug-link标识的独立调试文件?我没有在文档中看到任何单一传递方法来执行此操作ld,但ld文档很大,也许我错过了它.这是使用--build-id和--add-gnu-debuglink方法的示例命令行序列:
g++ -g -c -o …Run Code Online (Sandbox Code Playgroud) 有没有办法获取Julia函数调用者的文件/名称/行信息?
我发现这种方式来获取一些堆栈跟踪信息,如果调用者是另一个函数(但不是主上下文),我得到文件:line info:
module pd
global g_bTraceOn = true
export callerOfTraceIt
function callerOfTraceIt()
traceit( "hi" ) ;
end
function traceit( msg )
global g_bTraceOn
if ( g_bTraceOn )
bt = backtrace() ;
s = sprint(io->Base.show_backtrace(io, bt))
println( "debug: $s: $msg" )
end
end
end
using pd
callerOfTraceIt( )
Run Code Online (Sandbox Code Playgroud)
由此可见:
$ julia bt.jl
debug:
in traceit at C:\cygwin64\home\Peeter\julia\HarmonicBalance\bt.jl:15
in callerOfTraceIt at C:\cygwin64\home\Peeter\julia\HarmonicBalance\bt.jl:8
in include at boot.jl:245
in include_from_node1 at loading.jl:128
in process_options at client.jl:285
in _start at client.jl:354: hi …Run Code Online (Sandbox Code Playgroud) clang ++版本:2.9 vim版本:7.3
我写了我的 .clang_comple
--std=c++0x
Run Code Online (Sandbox Code Playgroud)
跟随源代码test.cc:
int main () {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并且clang_complete显示
test.cc|| unknown argument: '--std=c++0x'
Run Code Online (Sandbox Code Playgroud)
在quickfix列表中.
我尝试添加选项
set g:clang_user_options="--std=c++0x"
Run Code Online (Sandbox Code Playgroud)
问题仍然存在.
试图追踪一些clang_complete的代码,但仍然无法解决这个问题.所有其他选项都可以正确处理,但不能--std=c++0x错过任何内容吗?或者做错了什么?
我想尝试制定规范平方积分.例如,而不是以下内容:
Integrate[ Conjugate[Exp[-\[Beta] Abs[x]]] Exp[-\[Beta] Abs[x]],
{x, -Infinity, Infinity}]
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个函数来执行此操作,但需要函数来执行函数:
Clear[complexNorm, g, x]
complexNorm[ g_[ x_ ] ] := Integrate[ Conjugate[g[x]] * g[x],
{x, -Infinity, Infinity}]
v = complexNorm[ Exp[ - \[Beta] Abs[x]]] // Trace
Run Code Online (Sandbox Code Playgroud)
Mathematica在执行第一个积分时没有任何问题,但是当使用我的辅助函数时,跟踪的最终结果只显示:
complexNorm[E^(-\[Beta] Abs[x])]
Run Code Online (Sandbox Code Playgroud)
没有评估所需的积分?
语法密切关注我发现了一个例子http://www.mathprogramming-intro.org/download/MathProgrammingIntro.pdf [第155页],但它并没有为我工作.
比方说,是否有一个预制的操作需要两个列表
a = { 1, 2, 3 }
b = { 2, 4, 8 }
Run Code Online (Sandbox Code Playgroud)
并且在不使用for循环的情况下生成新列表,其中每对列表中的对应元素已被乘以
{ a[1] b[1], a[2] b[2], a[3] b[3] }
Run Code Online (Sandbox Code Playgroud)
我在想可能存在像Inner [Times,a,b,Plus]这样的东西,但是返回一个列表而不是一个总和.
使用 clang-3.5.0(但不是 gcc-4.9.2,也不是 intel 编译器)我收到消息:
use of undeclared identifier '_mm_cvtsi64x_si128'; did you mean '_mm_cvtsi64_si128'
Run Code Online (Sandbox Code Playgroud)
这是我发现在intel intrisics guide 中记录的内在函数,并且有问题的代码确实包含在 intinsics 指南中记录的包含:
#include "emmintrin.h"
Run Code Online (Sandbox Code Playgroud)
我想知道这个错误是否是因为没有传递正确的 -mcpu= 标志,但我尝试了 -mcpu=nahelem,这对于这个 sse2 指令应该足够了。知道 clang 是否支持此内在函数,如果支持,需要哪些编译标志才能使用它?
在Julia中,我可以创建一个零稀疏矩阵:
julia> a = spzeros(2,2)
2x2 sparse matrix with 0 Float64 entries:
julia> a[1,1] = 1
1
julia> full(a)
2x2 Array{Float64,2}:
1.0 0.0
0.0 0.0
Run Code Online (Sandbox Code Playgroud)
我可以创建一个复杂的矩阵:
julia> b = [ 1 ; im ]
2-element Array{Complex{Int64},1}:
1+0im
0+1im
Run Code Online (Sandbox Code Playgroud)
如果我尝试将复数值分配给稀疏的零矩阵,我会收到错误:
julia> a[1,1] = im
ERROR: InexactError()
in setindex! at sparse/sparsematrix.jl:1095
Run Code Online (Sandbox Code Playgroud)
这与spzeros()Float64参数化的返回类型一致:
julia> typeof(a)
SparseMatrixCSC{Float64,Int64} (constructor with 1 method)
Run Code Online (Sandbox Code Playgroud)
如何在Julia中创建复杂类型零的稀疏矩阵?
使用julia和PyPlot(它看起来像是调用matplotlib)我有一个径向对数图,范围从绘图外边缘的0dB到内部的-50dB:
using PyPlot ;
theta = 0:0.02:1 * pi ;
n = length(theta) ;
U = cos( theta ).^2 ;
V = zeros( size(U) ) ;
for i = 1:n
v = log10( U[i] ) ;
if ( v < -50/10 )
v = 0 ;
else
v = v/5 + 1 ;
end
V[i] = v ;
end
f1 = figure("p2Fig1",figsize=(10,10)) ; # Create a new figure
ax1 = axes( polar="true" ) ; # Create a polar axis
pl1 …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一个不同于FullSimplify的命令告诉mathematica进行所请求的计算.这是简化尝试的三种变体
FullSimplify[Re[ (-I + k Rr)] Cos[Ttheta], Element[{k, Rr, Ttheta, t, omega}, Reals]]
FullSimplify[Re[E^(I (omega t - k Rr)) ] Cos[Ttheta], Element[{k, Rr, Ttheta, t, omega}, Reals]]
FullSimplify[Re[E^(I (omega t - k Rr)) (-I + k Rr)] Cos[Ttheta], Element[{k, Rr, Ttheta, t, omega}, Reals]]
Run Code Online (Sandbox Code Playgroud)
我分别得到:
k Rr Cos[Ttheta]
Cos[k Rr - omega t] Cos[Ttheta]
I (-k Rr + omega t)
Cos[Ttheta] Re[E (-I + k Rr)]
Run Code Online (Sandbox Code Playgroud)
没有指数,实际部分得到评估.如果没有复数因子乘以指数,就会对实部进行评估.两者相乘,输入作为输出返回?
我尝试了// Timings修饰符,这不是因为表达式太复杂(这很好,因为我可以在我脑海中做到这一点,但这是一个较大的测试表达式的子集,也是失败的).
在Solaris上,似乎我需要单引号"匹配行的开头"表达式:
> sh
$ echo offset 0.000000 2>&1 | grep ^offset | tail -1
offset: not found
$ Usage: grep [-c|-l|-q] [-bhinsvwx] pattern_list [file ...]
grep [-c|-l|-q] [-bhinsvwx] [-e pattern_list]... [-f pattern_file]... [file...]
grep -E [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
grep -E [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
grep -F [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
grep -F [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
Run Code Online (Sandbox Code Playgroud)
我可以通过单引用正则表达式来轻松解决这个问题:
> sh
$ echo offset 0.000000 2>&1 | grep '^offset'| tail -1
offset 0.000000 …Run Code Online (Sandbox Code Playgroud) 我想创建的汉克尔功能,在n阶导数的定义的列表,但第N阶导数获得了在该文档下"的未知函数导"中描述的方式进行处理,并留下未评估.这是一个例子:
Clear[x, gaussianExponential]
gaussianExponential[x_] := Exp[- x^2]
FullSimplify[Derivative[2][gaussianExponential[x]]]
Run Code Online (Sandbox Code Playgroud)
我得到:(E ^ -x ^ 2)^ [Prime] [Prime]
(而不是看到评估的衍生物(并且最终表达式未被简化)).
知道这里发生了什么吗?
我想使用struct()在Matlab函数中返回各种值.其中之一是细胞阵列.这是一个例子:
xnames = cell( 3, 1 ) ;
for i = [1:3]
xnames{i} = sprintf( 'V_%d', i ) ;
end
a = 1 ;
b = 2 ;
r = struct( 'a', a, 'b', b, 'x', xnames ) ;
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试访问rx,则原来的单元标识似乎丢失了:
x = r.x ;
x{1}
Run Code Online (Sandbox Code Playgroud)
这会导致错误:'来自非单元数组对象的单元格内容引用.' 字符串数据似乎在那里,因为rx的显示显示:
ans =
V_1
ans =
V_2
ans =
V_3
Run Code Online (Sandbox Code Playgroud)
但是,我不知道在将单元格数组插入结构后如何获取这些字段?
编辑:在上面的例子中使用gui变量资源管理器,显示r最终得到结果:
1 2 'V_1'
1 2 'V_2'
1 2 'V_3'
Run Code Online (Sandbox Code Playgroud)
即它被转换为struct()数组,xnames {i}的每个值都有一个数组:
>> r(1)
ans =
a: 1
b: 2
x: 'V_1'
>> …Run Code Online (Sandbox Code Playgroud)