GCC可以生成带源代码行号的汇编么?该怎么解决

GCC可以生成带源代码行号的汇编么?
用GCC把c++代码生成的汇编再作为汇编器的输入,能产生正确的可执行文件么?
我用vs2008去看vs生成的汇编太不爽了,一个类的函数调用竟然就一个语句:object.foo();郁闷,看来关于类的汇编的细节是compiler specific?机密?不知道看gcc生成的汇编是不是能看到完整的代码,当调用类的函数时能够看到调用过程。
主要是想通过看汇编代码来深入学习c++,但对gcc不熟,请对gcc熟的人指点指点。

------解决方案--------------------
类函数调用就是那样的.call一个函数地址.
------解决方案--------------------
gcc -S 选项生成汇编代码
或者在LINUX下objdump查看汇编代码
------解决方案--------------------
806cbb0: e8 61 59 00 00 call 8072516 <_ZNK12MyTemplI4MyClassE12current_sizeEv>
以上是一个类方法调用的指令(gcc)
------解决方案--------------------
探讨
gcc -S 选项生成汇编代码
或者在LINUX下objdump查看汇编代码

------解决方案--------------------
Assembly code


    .686P
    .XMM
    include listing.inc
    .model    flat

INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES

CONST    SEGMENT
$SG3846    DB    '%d', 0aH, 00H
CONST    ENDS
PUBLIC    ?func@test@@QAEHHHH@Z                ; test::func
PUBLIC    _main
EXTRN    _printf:PROC
; Function compile flags: /Odtp
; File c:\documents and settings\hwp\桌面\test.cpp
_TEXT    SEGMENT
_c$ = -8                        ; size = 4
_x$ = -1                        ; size = 1
_main    PROC

; 21   : {

    push    ebp
    mov    ebp, esp
    sub    esp, 8

; 22   :     test x;
; 23   :     int c = x.func( 1,2,3);

    push    3
    push    2
    push    1
    lea    ecx, DWORD PTR _x$[ebp]
    call    ?func@test@@QAEHHHH@Z            ; test::func 这不就是call么
    mov    DWORD PTR _c$[ebp], eax

; 24   :     printf("%d\n",c);

    mov    eax, DWORD PTR _c$[ebp]
    push    eax
    push    OFFSET $SG3846
    call    _printf
    add    esp, 8

; 25   :     return 0;

    xor    eax, eax

; 26   : } 

    mov    esp, ebp
    pop    ebp
    ret    0
_main    ENDP
; Function compile flags: /Odtp
_TEXT    ENDS
;    COMDAT ?func@test@@QAEHHHH@Z
_TEXT    SEGMENT
_this$ = -4                        ; size = 4
_a$ = 8                            ; size = 4
_b$ = 12                        ; size = 4
_c$ = 16                        ; size = 4
?func@test@@QAEHHHH@Z PROC                ; test::func, COMDAT
; _this$ = ecx

; 15   :     {

    push    ebp
    mov    ebp, esp
    push    ecx
    mov    DWORD PTR _this$[ebp], ecx

; 16   :         return a+b+c;

    mov    eax, DWORD PTR _a$[ebp]
    add    eax, DWORD PTR _b$[ebp]
    add    eax, DWORD PTR _c$[ebp]

; 17   :     }

    mov    esp, ebp
    pop    ebp
    ret    12                    ; 0000000cH
?func@test@@QAEHHHH@Z ENDP                ; test::func
_TEXT    ENDS
END